import { useEffect } from "react"; import { Trans, useTranslation } from "react-i18next"; import { Link, useNavigate } from "react-router-dom"; import useSWR from "swr"; import { CheckCircle2, XCircle } from "lucide-react"; import { LuExternalLink } from "react-icons/lu"; import { Toaster } from "@/components/ui/sonner"; import ActivityIndicator from "@/components/indicators/activity-indicator"; import { Button } from "@/components/ui/button"; import Heading from "@/components/ui/heading"; import { SettingsGroupCard, SplitCardRow, } from "@/components/card/SettingsGroupCard"; import FrigatePlusCurrentModelSummary from "@/views/settings/components/FrigatePlusCurrentModelSummary"; import { useDocDomain } from "@/hooks/use-doc-domain"; import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel"; import { FrigateConfig } from "@/types/frigateConfig"; import type { SettingsPageProps } from "@/views/settings/SingleSectionPage"; export default function FrigatePlusSettingsView(_props: SettingsPageProps) { const { t } = useTranslation("views/settings"); const { getLocaleDocUrl } = useDocDomain(); const { data: config } = useSWR("config"); const navigate = useNavigate(); useEffect(() => { document.title = t("documentTitle.frigatePlus"); }, [t]); if (!config) { return ; } return (
{t("frigatePlus.title")}

{t("frigatePlus.description")}

{t("frigatePlus.apiKey.desc")}

{!config?.model.plus && (
{t("frigatePlus.apiKey.plusLink")}
)} } content={
{config?.plus?.enabled ? ( ) : ( )} {config?.plus?.enabled ? t("frigatePlus.apiKey.validated") : t("frigatePlus.apiKey.notValidated")}
} />
{config?.plus?.enabled && ( navigate("/settings?page=systemDetectorsAndModel") } > {t("frigatePlus.changeInDetectorsAndModel")} } /> )}

frigatePlus.snapshotConfig.desc

{t("readTheDocumentation", { ns: "common" })}
} content={
{Object.entries(config.cameras).map( ([name, camera]) => ( ), )}
{t("frigatePlus.snapshotConfig.table.camera")} {t("frigatePlus.snapshotConfig.table.snapshots")}
{camera.snapshots.enabled ? ( ) : ( )}
} />
); }