import NavItem from "./NavItem"; import { IoIosWarning } from "react-icons/io"; import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer"; import useSWR from "swr"; import { FrigateStats } from "@/types/stats"; import { useFrigateStats } from "@/api/ws"; import { useContext, useEffect, useMemo } from "react"; import useStats from "@/hooks/use-stats"; import GeneralSettings from "../menu/GeneralSettings"; import AccountSettings from "../menu/AccountSettings"; import useNavigation from "@/hooks/use-navigation"; import { StatusBarMessagesContext, StatusMessage, } from "@/context/statusbar-provider"; import { Link } from "react-router-dom"; import { cn } from "@/lib/utils"; import { isMobile } from "react-device-detect"; function Bottombar() { const navItems = useNavigation("secondary"); return (
{navItems.map((item) => ( ))}
); } type StatusAlertNavProps = { className?: string; }; function StatusAlertNav({ className }: StatusAlertNavProps) { const { data: initialStats } = useSWR("stats", { revalidateOnFocus: false, }); const { payload: latestStats } = useFrigateStats(); const { messages, addMessage, clearMessages } = useContext( StatusBarMessagesContext, )!; const stats = useMemo(() => { if (latestStats) { return latestStats; } return initialStats; }, [initialStats, latestStats]); const { potentialProblems } = useStats(stats); useEffect(() => { clearMessages("stats"); potentialProblems.forEach((problem) => { addMessage( "stats", problem.text, problem.color, undefined, problem.relevantLink, ); }); }, [potentialProblems, addMessage, clearMessages]); if (!messages || Object.keys(messages).length === 0) { return; } return (
{Object.entries(messages).map(([key, messageArray]) => (
{messageArray.map(({ id, text, color, link }: StatusMessage) => { const message = (
{text}
); if (link) { return ( {message} ); } else { return message; } })}
))}
); } export default Bottombar;