import { Box, Button, Group, Menu, Overlay, Stack } from '@mantine/core'; import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { FiMenu, FiSettings } from 'react-icons/fi'; import { useNavigate } from 'react-router-dom'; import { buttonClasses, menuClasses } from 'styles'; import type { AppCategory, WolClient } from 'types'; import SettingsCard from './SettingsCard'; import ThemingCard from './ThemingCard'; import WakeOnLan from './WakeOnLanCard'; function SettingsButton() { const { data: appCategoryData, isFetched: appCategoryDataIsFetched } = useQueryAPI({ endpoint: 'api/appCategories', }); const { data: wolClientData, isFetched: wolClientDataIsFetched } = useQueryAPI({ endpoint: 'api/wolClients', }); const { data: wolEnabledData, isFetched: wolEnabledDataIsFetched } = useQueryAPI({ endpoint: 'api/wolEnabled', }); const [wolClients, setWolClients] = useState([]); const [enabled, setEnabled] = useState(0); const { mutateAsync } = useMutationAPI(); const [categories, setCategories] = useState([{ value: 'All', label: 'All' }]); const [selectedClient, setSelectedClient] = useState(wolClientData?.[0]); const navigate = useNavigate(); const { theme, isMobile, appFilter, setAppFilter, appSort, setAppSort, appDensity, setAppDensity, appScale, setAppScale, bookmarkSort, setBookmarkSort, bookmarkFilter, setBookmarkFilter, bookmarkDensity, setBookmarkDensity, bookmarkScale, setBookmarkScale, } = useCommonHooks(); const handleWakeRequest = () => { mutateAsync({ method: 'POST', endpoint: 'api/wakeClient', body: selectedClient || wolClientData?.[0], }); }; useEffect(() => { if (appCategoryData) { const list: [any] = appCategoryData.map((category: AppCategory) => { return { value: category.filterName, label: category.filterName }; }); list.unshift({ value: 'All', label: 'All' }); setCategories(list); } }, [appCategoryData, appCategoryDataIsFetched]); useEffect(() => { if (wolClientData && wolClientDataIsFetched) { setWolClients(wolClientData); } }, [wolClientData, wolClientDataIsFetched]); useEffect(() => { if (wolEnabledData && wolEnabledDataIsFetched) { setEnabled(wolEnabledData[0].enableWol); } }, [wolEnabledData, wolEnabledDataIsFetched]); return ( {enabled === 1 && ( {wolClients.length === 0 && ( )} )} ); } export default SettingsButton;