/* * Copyright (c) 2021 - 2023, Ludvig Lundgren and the autobrr contributors. * SPDX-License-Identifier: GPL-2.0-or-later */ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { toast } from "react-hot-toast"; import { APIClient } from "@api/APIClient"; import { SettingsContext } from "@utils/Context"; import { Checkbox } from "@components/Checkbox"; import Toast from "@components/notifications/Toast"; import { ExternalLink } from "@components/ExternalLink"; import { Section, RowItem } from "./_components"; function ApplicationSettings() { const [settings, setSettings] = SettingsContext.use(); const { isError:isConfigError, error: configError, data } = useQuery({ queryKey: ["config"], queryFn: APIClient.config.get, retry: false, refetchOnWindowFocus: false }); if (isConfigError) { console.log(configError); } const { isError, error, data: updateData } = useQuery({ queryKey: ["updates"], queryFn: APIClient.updates.getLatestRelease, retry: false, refetchOnWindowFocus: false, enabled: data?.check_for_updates === true }); if (isError) { console.log(error); } const queryClient = useQueryClient(); const checkUpdateMutation = useMutation({ mutationFn: APIClient.updates.check, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["updates"] }); } }); const toggleCheckUpdateMutation = useMutation({ mutationFn: (value: boolean) => APIClient.config.update({ check_for_updates: value }).then(() => value), onSuccess: (_, value: boolean) => { toast.custom(t => ); queryClient.invalidateQueries({ queryKey: ["config"] }); checkUpdateMutation.mutate(); } }); return (
{data && (
)}
{updateData.name} available! ) : null } /> {data?.commit && } {data?.date && }
setSettings((prevState) => ({ ...prevState, debug: newValue })) } />
{ toggleCheckUpdateMutation.mutate(newValue); }} /> setSettings((prevState) => ({ ...prevState, darkTheme: newValue })) } />
); } export default ApplicationSettings;