import { ActionIcon, Button, Group, Menu, MultiSelect, Overlay, Select, Stack, Text, Tooltip, } from '@mantine/core'; import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { FaDice } from 'react-icons/fa'; import { FiMenu, FiPower, FiSettings, FiShuffle } from 'react-icons/fi'; import { useNavigate } from 'react-router-dom'; import { toast } from 'react-toastify'; import { actionIconClasses, buttonClasses, menuClasses, multiSelectClasses, selectClasses, stackClasses, } from 'styles'; function SettingsButton() { const { data, isFetched } = useQueryAPI({ endpoint: 'api/appCategories' }); const { data: wolClients, isFetched: wolClientsIsFetched } = useQueryAPI({ endpoint: 'api/wolClients', }); const [wolClientsData, setWolClientsData] = useState([]); const { data: allThemes, isFetched: isAllThemesFetched } = useQueryAPI({ endpoint: 'api/themes', }); const { mutateAsync: wakeRequest } = useMutationAPI(); const [allThemeData, setAllThemeData] = useState([]); const [categories, setCategories] = useState([{ value: 'All', label: 'All' }]); const [selectedClient, setSelectedClient] = useState(wolClients?.[0]); const [overlayOpened, setOverlayOpened] = useState(false); const navigate = useNavigate(); const notify = (notification: any) => toast(notification, { position: 'bottom-right' }); const { currentTheme, setCurrentTheme, handleThemeChange, theme, appFilter, setAppFilter, bookmarkFilter, setBookmarkFilter, isMobile, } = useCommonHooks(); const handleWakeRequest = () => { wakeRequest({ method: 'POST', endpoint: 'api/wakeClient', body: selectedClient || wolClients?.[0], }); }; useEffect(() => { if (data) { const list: [any] = data.map((category: any) => { return { value: category.filterName, label: category.filterName }; }); list.unshift({ value: 'All', label: 'All' }); setCategories(list); } }, [data, isFetched]); useEffect(() => { if (wolClients && wolClientsIsFetched) { setWolClientsData(wolClients); } }, [wolClients, wolClientsIsFetched]); useEffect(() => { if (allThemes && isAllThemesFetched) { setAllThemeData(allThemes); } }, [allThemes, isAllThemesFetched]); return ( <> {overlayOpened && } setOverlayOpened(true)} onClose={() => setOverlayOpened(false)} > navigate(`/${import.meta.env.VITE_BASE_URL}/settings`)} style={{ cursor: 'pointer', position: 'absolute', top: '.5rem', right: '.5rem', }} /> Wake on LAN