import { useMutation } from "@tanstack/react-query"; import { useAtom } from "jotai"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { View } from "react-native"; import { toast } from "sonner-native"; import { SeerrApi, useSeerr } from "@/hooks/useSeerr"; import { userAtom } from "@/providers/JellyfinProvider"; import { useSettings } from "@/utils/atoms/settings"; import { Button } from "../Button"; import { Input } from "../common/Input"; import { Text } from "../common/Text"; import { ListGroup } from "../list/ListGroup"; import { ListItem } from "../list/ListItem"; export const SeerrSettings = () => { const { seerrUser, setSeerrUser, clearAllSeerrData } = useSeerr(); const { t } = useTranslation(); const [user] = useAtom(userAtom); const { settings, updateSettings } = useSettings(); const [seerrPassword, setSeerrPassword] = useState( undefined, ); const [seerrServerUrl, setSeerrServerUrl] = useState( settings?.seerrServerUrl || undefined, ); const loginToSeerrMutation = useMutation({ mutationFn: async () => { if (!seerrServerUrl && !settings?.seerrServerUrl) throw new Error("Missing server url"); if (!user?.Name) throw new Error("Missing required information for login"); const seerrTempApi = new SeerrApi( seerrServerUrl || settings.seerrServerUrl || "", ); const testResult = await seerrTempApi.test(); if (!testResult.isValid) throw new Error("Invalid server url"); return seerrTempApi.login(user.Name, seerrPassword || ""); }, onSuccess: (user) => { setSeerrUser(user); updateSettings({ seerrServerUrl }); }, onError: () => { toast.error(t("seerr.failed_to_login")); }, onSettled: () => { setSeerrPassword(undefined); }, }); const clearData = () => { clearAllSeerrData().finally(() => { setSeerrUser(undefined); setSeerrPassword(undefined); setSeerrServerUrl(undefined); }); }; return ( {seerrUser ? ( <> ) : ( {t("home.settings.plugins.seerr.seerr_warning")} {t("home.settings.plugins.seerr.server_url")} {t("home.settings.plugins.seerr.server_url_hint")} {t("home.settings.plugins.seerr.password")} )} ); };