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 { JellyseerrApi, useJellyseerr } from "@/hooks/useJellyseerr"; 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 JellyseerrSettings = () => { const { jellyseerrUser, setJellyseerrUser, clearAllJellyseerData } = useJellyseerr(); const { t } = useTranslation(); const [user] = useAtom(userAtom); const [settings, updateSettings, _pluginSettings] = useSettings(); const [jellyseerrPassword, setJellyseerrPassword] = useState< string | undefined >(undefined); const [jellyseerrServerUrl, setjellyseerrServerUrl] = useState< string | undefined >(settings?.jellyseerrServerUrl || undefined); const loginToJellyseerrMutation = useMutation({ mutationFn: async () => { if (!jellyseerrServerUrl && !settings?.jellyseerrServerUrl) throw new Error("Missing server url"); if (!user?.Name) throw new Error("Missing required information for login"); const jellyseerrTempApi = new JellyseerrApi( jellyseerrServerUrl || settings.jellyseerrServerUrl || "", ); const testResult = await jellyseerrTempApi.test(); if (!testResult.isValid) throw new Error("Invalid server url"); return jellyseerrTempApi.login(user.Name, jellyseerrPassword || ""); }, onSuccess: (user) => { setJellyseerrUser(user); updateSettings({ jellyseerrServerUrl }); }, onError: () => { toast.error(t("jellyseerr.failed_to_login")); }, onSettled: () => { setJellyseerrPassword(undefined); }, }); const clearData = () => { clearAllJellyseerData().finally(() => { setJellyseerrUser(undefined); setJellyseerrPassword(undefined); setjellyseerrServerUrl(undefined); }); }; return ( {jellyseerrUser ? ( <> ) : ( {t("home.settings.plugins.jellyseerr.jellyseerr_warning")} {t("home.settings.plugins.jellyseerr.server_url")} {t("home.settings.plugins.jellyseerr.server_url_hint")} {t("home.settings.plugins.jellyseerr.password")} )} ); };