import { h, Fragment } from 'preact'; import BaseAppBar from './components/AppBar'; import LinkedLogo from './components/LinkedLogo'; import Menu, { MenuItem, MenuSeparator } from './components/Menu'; import AutoAwesomeIcon from './icons/AutoAwesome'; import LightModeIcon from './icons/LightMode'; import DarkModeIcon from './icons/DarkMode'; import FrigateRestartIcon from './icons/FrigateRestart'; import Prompt from './components/Prompt'; import { useDarkMode } from './context'; import { useCallback, useRef, useState } from 'preact/hooks'; import { useRestart } from './api/mqtt'; export default function AppBar() { const [showMoreMenu, setShowMoreMenu] = useState(false); const [showDialog, setShowDialog] = useState(false); const [showDialogWait, setShowDialogWait] = useState(false); const { setDarkMode } = useDarkMode(); const { send: sendRestart } = useRestart(); const handleSelectDarkMode = useCallback( (value) => { setDarkMode(value); setShowMoreMenu(false); }, [setDarkMode, setShowMoreMenu] ); const moreRef = useRef(null); const handleShowMenu = useCallback(() => { setShowMoreMenu(true); }, [setShowMoreMenu]); const handleDismissMoreMenu = useCallback(() => { setShowMoreMenu(false); }, [setShowMoreMenu]); const handleClickRestartDialog = useCallback(() => { setShowDialog(false); setShowDialogWait(true); sendRestart(); }, [setShowDialog]); // eslint-disable-line react-hooks/exhaustive-deps const handleDismissRestartDialog = useCallback(() => { setShowDialog(false); }, [setShowDialog]); const handleRestart = useCallback(() => { setShowMoreMenu(false); setShowDialog(true); }, [setShowDialog]); return ( {showMoreMenu ? ( ) : null} {showDialog ? ( ) : null} {showDialogWait ? ( ) : null} ); }