import React, { useEffect, useState } from "react"; import { Button, Form } from "react-bootstrap"; import { DurationInput, LoadingIndicator } from "src/components/Shared"; import { useConfiguration, useConfigureInterface } from "src/core/StashService"; import { useToast } from "src/hooks"; export const SettingsInterfacePanel: React.FC = () => { const Toast = useToast(); const { data: config, error, loading } = useConfiguration(); const [soundOnPreview, setSoundOnPreview] = useState(true); const [wallShowTitle, setWallShowTitle] = useState(true); const [wallPlayback, setWallPlayback] = useState("video"); const [maximumLoopDuration, setMaximumLoopDuration] = useState(0); const [autostartVideo, setAutostartVideo] = useState(false); const [showStudioAsText, setShowStudioAsText] = useState(false); const [css, setCSS] = useState(); const [cssEnabled, setCSSEnabled] = useState(false); const [language, setLanguage] = useState("en"); const [updateInterfaceConfig] = useConfigureInterface({ soundOnPreview, wallShowTitle, wallPlayback, maximumLoopDuration, autostartVideo, showStudioAsText, css, cssEnabled, language, }); useEffect(() => { const iCfg = config?.configuration?.interface; setSoundOnPreview(iCfg?.soundOnPreview ?? true); setWallShowTitle(iCfg?.wallShowTitle ?? true); setWallPlayback(iCfg?.wallPlayback ?? "video"); setMaximumLoopDuration(iCfg?.maximumLoopDuration ?? 0); setAutostartVideo(iCfg?.autostartVideo ?? false); setShowStudioAsText(iCfg?.showStudioAsText ?? false); setCSS(iCfg?.css ?? ""); setCSSEnabled(iCfg?.cssEnabled ?? false); setLanguage(iCfg?.language ?? "en-US"); }, [config]); async function onSave() { try { const result = await updateInterfaceConfig(); // eslint-disable-next-line no-console console.log(result); Toast.success({ content: "Updated config" }); } catch (e) { Toast.error(e); } } if (error) return

{error.message}

; if (loading) return ; return ( <>

User Interface

Language
) => setLanguage(e.currentTarget.value) } >
Scene / Marker Wall
setWallShowTitle(!wallShowTitle)} /> setSoundOnPreview(!soundOnPreview)} />
Preview Type
) => setWallPlayback(e.currentTarget.value) } > Configuration for wall items
Scene List
{ setShowStudioAsText(!showStudioAsText); }} />
Scene Player
{ setAutostartVideo(!autostartVideo); }} />
Maximum loop duration
setMaximumLoopDuration(duration ?? 0)} /> Maximum scene duration where scene player will loop the video - 0 to disable
Custom CSS
{ setCSSEnabled(!cssEnabled); }} /> ) => setCSS(e.currentTarget.value) } rows={16} className="col col-sm-6 text-input code" /> Page must be reloaded for changes to take effect.

); };