import { ComposeFilledIcon, HorizontalDotsIcon, PlusIcon, SearchIcon, } from "@lume/icons"; import { User } from "@/components/user"; import { cn } from "@lume/utils"; import { Outlet, createFileRoute } from "@tanstack/react-router"; import { getCurrent } from "@tauri-apps/api/window"; import { useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import * as Popover from "@radix-ui/react-popover"; import { LumeWindow, NostrAccount } from "@lume/system"; import { Link } from "@tanstack/react-router"; export const Route = createFileRoute("/$account")({ beforeLoad: async () => { const accounts = await NostrAccount.getAccounts(); return { accounts }; }, component: Screen, }); function Screen() { const { platform } = Route.useRouteContext(); return (
); } function Accounts() { const { accounts } = Route.useRouteContext(); const { account } = Route.useParams(); const [windowWidth, setWindowWidth] = useState(null); const navigate = Route.useNavigate(); const sortedList = useMemo(() => { const list = accounts; for (const [i, item] of list.entries()) { if (item === account) { list.splice(i, 1); list.unshift(item); } } return list; }, [accounts]); const changeAccount = async (npub: string) => { if (npub === account) { return await LumeWindow.openProfile(account); } // Change current account and update signer const select = await NostrAccount.loadAccount(npub); if (select) { // Reset current columns await getCurrent().emit("columns", { type: "reset" }); // Redirect to new account return navigate({ to: "/$account/home", params: { account: npub }, resetScroll: true, replace: true, }); } else { toast.warning("Something wrong."); } }; const getWindowDimensions = () => { const { innerWidth: width, innerHeight: height } = window; return { width, height, }; }; useEffect(() => { function handleResize() { setWindowWidth(getWindowDimensions().width); } if (!windowWidth) setWindowWidth(getWindowDimensions().width); window.addEventListener("resize", handleResize); return () => window.removeEventListener("resize", handleResize); }, []); return (
{sortedList .slice(0, windowWidth > 500 ? account.length : 2) .map((user) => ( ))} {accounts.length >= 3 && windowWidth <= 700 ? ( {sortedList.slice(2).map((user) => ( ))} ) : null}
); }