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 (

{currentDate}

Welcome back!

{context.accounts.map((account) => (
select(account)} onKeyDown={() => select(account)} className="flex items-center justify-between hover:bg-black/5 dark:hover:bg-white/5" >
{displayNpub(account, 16)}
{loading.npub === account ? ( loading.status ? ( ) : null ) : null}
))}
Add account
Custom Bootstrap Relays
); }