import { User } from "@/components/user"; import { PlusIcon, RelayIcon } from "@lume/icons"; import { NostrAccount } from "@lume/system"; import { Spinner } from "@lume/ui"; import { checkForAppUpdates, displayNpub } from "@lume/utils"; import { Link } from "@tanstack/react-router"; import { createFileRoute, redirect } from "@tanstack/react-router"; import { message } from "@tauri-apps/plugin-dialog"; import { useState } from "react"; export const Route = createFileRoute("/")({ beforeLoad: async () => { // Check for app updates // TODO: move this function to rust await checkForAppUpdates(true); // Get all accounts // TODO: use emit & listen const accounts = await NostrAccount.getAccounts(); if (accounts.length < 1) { throw redirect({ to: "/landing", replace: true, }); } return { accounts }; }, component: Screen, }); function Screen() { const navigate = Route.useNavigate(); const context = Route.useRouteContext(); const [loading, setLoading] = useState({ npub: "", status: false }); const select = async (npub: string) => { try { setLoading({ npub, status: true }); const status = await NostrAccount.loadAccount(npub); if (status) { return navigate({ to: "/$account/home", params: { account: npub }, replace: true, }); } } catch (e) { setLoading({ npub: "", status: false }); await message(String(e), { title: "Account", kind: "error", }); } }; const currentDate = new Date().toLocaleString("default", { weekday: "long", month: "long", day: "numeric", }); return (