import { CheckIcon } from "@lume/icons"; import { createLazyFileRoute, useNavigate } from "@tanstack/react-router"; import { useTranslation } from "react-i18next"; import * as Switch from "@radix-ui/react-switch"; import { useEffect, useState } from "react"; import { Settings } from "@lume/types"; import { useArk } from "@lume/ark"; import { isPermissionGranted, requestPermission, } from "@tauri-apps/plugin-notification"; import { toast } from "sonner"; export const Route = createLazyFileRoute("/auth/settings")({ component: Screen, }); function Screen() { const ark = useArk(); const navigate = useNavigate(); // @ts-ignore, magic!!! const { account } = Route.useSearch(); const { t } = useTranslation(); const [settings, setSettings] = useState({ notification: false, enhancedPrivacy: false, autoUpdate: false, }); const toggleNofitication = async () => { await requestPermission(); setSettings((prev) => ({ ...prev, notification: !settings.notification, })); }; const toggleAutoUpdate = () => { setSettings((prev) => ({ ...prev, autoUpdate: !settings.autoUpdate, })); }; const toggleEnhancedPrivacy = () => { setSettings((prev) => ({ ...prev, enhancedPrivacy: !settings.enhancedPrivacy, })); }; const submit = async () => { try { const eventId = await ark.set_settings(settings); if (eventId) { navigate({ to: "/$account/home", params: { account }, replace: true }); } } catch (e) { toast.error(e); } }; useEffect(() => { async function loadSettings() { const permissionGranted = await isPermissionGranted(); // get notification permission const settings = await ark.get_settings(account); setSettings({ ...settings, notification: permissionGranted }); } loadSettings(); }, []); return (

{t("onboardingSettings.title")}

{t("onboardingSettings.subtitle")}

toggleNofitication()} className="relative mt-1 h-7 w-12 shrink-0 cursor-default rounded-full bg-neutral-200 outline-none data-[state=checked]:bg-blue-500 dark:bg-neutral-800" >

Push Notification

Enabling push notifications will allow you to receive notifications from Lume.

toggleEnhancedPrivacy()} className="relative mt-1 h-7 w-12 shrink-0 cursor-default rounded-full bg-neutral-200 outline-none data-[state=checked]:bg-blue-500 dark:bg-neutral-800" >

Enhanced Privacy

Lume will display external resources like image, video or link preview as plain text.

toggleAutoUpdate()} className="relative mt-1 h-7 w-12 shrink-0 cursor-default rounded-full bg-neutral-200 outline-none data-[state=checked]:bg-blue-500 dark:bg-neutral-800" >

Auto Update

Automatically download and install new version.

There are many more settings you can configure from the 'Settings' Screen. Be sure to visit it later.

); }