import React, { useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { Button } from "./components/ui/button"; import Logo from "./Logo"; import Spinner from "./Spinner"; import usePluginSettings from "./utils/settings"; import { api } from "./utils/trpc"; export default function OptionsPage() { const navigate = useNavigate(); const { settings, setSettings } = usePluginSettings(); const { data: whoami, error: whoAmIError } = api.users.whoami.useQuery( undefined, { enabled: settings.address != "", }, ); const { mutate: deleteKey } = api.apiKeys.revoke.useMutation(); const invalidateWhoami = api.useUtils().users.whoami.refetch; useEffect(() => { invalidateWhoami(); }, [settings, invalidateWhoami]); let loggedInMessage: React.ReactNode; if (whoAmIError) { if (whoAmIError.data?.code == "UNAUTHORIZED") { loggedInMessage = Not logged in; } else { loggedInMessage = ( Something went wrong: {whoAmIError.message} ); } } else if (whoami) { loggedInMessage = {whoami.email}; } else { loggedInMessage = ; } const onLogout = () => { if (settings.apiKeyId) { deleteKey({ id: settings.apiKeyId }); } setSettings((s) => ({ ...s, apiKey: "", apiKeyId: undefined })); invalidateWhoami(); navigate("/notconfigured"); }; return (
Settings
Server Address: {settings.address}
Logged in as: {loggedInMessage}
); }