import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import Heading from "@/components/ui/heading"; import copy from "copy-to-clipboard"; import { useCallback, useMemo, useState } from "react"; import useSWR from "swr"; const logTypes = ["frigate", "go2rtc", "nginx"] as const; type LogType = (typeof logTypes)[number]; function Logs() { const [logService, setLogService] = useState("frigate"); const { data: frigateLogs } = useSWR("logs/frigate", { refreshInterval: 1000, }); const { data: go2rtcLogs } = useSWR("logs/go2rtc", { refreshInterval: 1000 }); const { data: nginxLogs } = useSWR("logs/nginx", { refreshInterval: 1000 }); const logs = useMemo(() => { if (logService == "frigate") { return frigateLogs; } else if (logService == "go2rtc") { return go2rtcLogs; } else if (logService == "nginx") { return nginxLogs; } else { return "unknown logs"; } }, [logService, frigateLogs, go2rtcLogs, nginxLogs]); const handleCopyLogs = useCallback(() => { copy(logs); }, [logs]); return ( <>
Logs
Select Logs To View setLogService(type as LogType)} > {Object.values(logTypes).map((item) => ( {item} Logs ))}
{logs}
); } export default Logs;