import { Button, Checkbox, Divider, FormGroup, H4, Spinner, TextArea, NumericInput } from "@blueprintjs/core"; import React, { FunctionComponent, useEffect, useState } from "react"; import { StashService } from "../../core/StashService"; import { ErrorUtils } from "../../utils/errors"; import { ToastUtils } from "../../utils/toasts"; interface IProps {} export const SettingsInterfacePanel: FunctionComponent = () => { const config = StashService.useConfiguration(); const [soundOnPreview, setSoundOnPreview] = useState(); const [wallShowTitle, setWallShowTitle] = useState(); const [maximumLoopDuration, setMaximumLoopDuration] = useState(0); const [autostartVideo, setAutostartVideo] = useState(); const [showStudioAsText, setShowStudioAsText] = useState(); const [css, setCSS] = useState(); const [cssEnabled, setCSSEnabled] = useState(); const updateInterfaceConfig = StashService.useConfigureInterface({ soundOnPreview, wallShowTitle, maximumLoopDuration, autostartVideo, showStudioAsText, css, cssEnabled }); useEffect(() => { if (!config.data || !config.data.configuration || !!config.error) { return; } if (!!config.data.configuration.interface) { let iCfg = config.data.configuration.interface; setSoundOnPreview(iCfg.soundOnPreview !== undefined ? iCfg.soundOnPreview : true); setWallShowTitle(iCfg.wallShowTitle !== undefined ? iCfg.wallShowTitle : true); setMaximumLoopDuration(iCfg.maximumLoopDuration || 0); setAutostartVideo(iCfg.autostartVideo !== undefined ? iCfg.autostartVideo : false); setShowStudioAsText(iCfg.showStudioAsText !== undefined ? iCfg.showStudioAsText : false); setCSS(config.data.configuration.interface.css || ""); setCSSEnabled(config.data.configuration.interface.cssEnabled || false); } }, [config.data, config.error]); async function onSave() { try { const result = await updateInterfaceConfig(); console.log(result); ToastUtils.success("Updated config"); } catch (e) { ErrorUtils.handle(e); } } return ( <> {!!config.error ?

{config.error.message}

: undefined} {(!config.data || !config.data.configuration || config.loading) ? : undefined}

User Interface

setWallShowTitle(!wallShowTitle)} /> setSoundOnPreview(!soundOnPreview)} /> { setShowStudioAsText(!showStudioAsText) }} /> { setAutostartVideo(!autostartVideo) }} /> setMaximumLoopDuration(value)} min={0} minorStepSize={1} /> { setCSSEnabled(!cssEnabled) }} /> ); };