import SettingsLayout from "@/layouts/SettingsLayout"; import { useState, useEffect } from "react"; import SubmitButton from "@/components/SubmitButton"; import { toast } from "react-hot-toast"; import Checkbox from "@/components/Checkbox"; import useLocalSettingsStore from "@/store/localSettings"; import { useTranslation } from "next-i18next"; import getServerSideProps from "@/lib/client/getServerSideProps"; // Import getServerSideProps for server-side data fetching import { LinksRouteTo } from "@prisma/client"; import { useUpdateUser, useUser } from "@/hooks/store/users"; export default function Appearance() { const { t } = useTranslation(); const { updateSettings } = useLocalSettingsStore(); const [submitLoader, setSubmitLoader] = useState(false); const { data: account = [] } = useUser(); const updateUser = useUpdateUser(); const [user, setUser] = useState(account); const [preventDuplicateLinks, setPreventDuplicateLinks] = useState( account.preventDuplicateLinks ); const [archiveAsScreenshot, setArchiveAsScreenshot] = useState( account.archiveAsScreenshot ); const [archiveAsPDF, setArchiveAsPDF] = useState( account.archiveAsPDF ); const [archiveAsMonolith, setArchiveAsMonolith] = useState( account.archiveAsMonolith ); const [archiveAsWaybackMachine, setArchiveAsWaybackMachine] = useState(account.archiveAsWaybackMachine); const [linksRouteTo, setLinksRouteTo] = useState(account.linksRouteTo); useEffect(() => { setUser({ ...account, archiveAsScreenshot, archiveAsMonolith, archiveAsPDF, archiveAsWaybackMachine, linksRouteTo, preventDuplicateLinks, }); }, [ account, archiveAsScreenshot, archiveAsMonolith, archiveAsPDF, archiveAsWaybackMachine, linksRouteTo, preventDuplicateLinks, ]); function objectIsEmpty(obj: object) { return Object.keys(obj).length === 0; } useEffect(() => { if (!objectIsEmpty(account)) { setArchiveAsScreenshot(account.archiveAsScreenshot); setArchiveAsMonolith(account.archiveAsMonolith); setArchiveAsPDF(account.archiveAsPDF); setArchiveAsWaybackMachine(account.archiveAsWaybackMachine); setLinksRouteTo(account.linksRouteTo); setPreventDuplicateLinks(account.preventDuplicateLinks); } }, [account]); const submit = async () => { setSubmitLoader(true); await updateUser.mutateAsync({ ...user }); setSubmitLoader(false); }; return (

{t("preference")}

{t("select_theme")}

updateSettings({ theme: "dark" })} >

{t("dark")}

updateSettings({ theme: "light" })} >

{t("light")}

{t("archive_settings")}

{t("formats_to_archive")}

setArchiveAsScreenshot(!archiveAsScreenshot)} /> setArchiveAsMonolith(!archiveAsMonolith)} /> setArchiveAsPDF(!archiveAsPDF)} /> setArchiveAsWaybackMachine(!archiveAsWaybackMachine) } />

{t("link_settings")}

setPreventDuplicateLinks(!preventDuplicateLinks)} />

{t("clicking_on_links_should")}

); } export { getServerSideProps };