import { appSettings, cn } from "@/commons"; import { User } from "@/components/user"; import { LumeWindow } from "@/system"; import { CaretDown, Feather, MagnifyingGlass } from "@phosphor-icons/react"; import { Outlet, createLazyFileRoute } from "@tanstack/react-router"; import { useStore } from "@tanstack/react-store"; import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu"; import { writeText } from "@tauri-apps/plugin-clipboard-manager"; import { memo, useCallback } from "react"; export const Route = createLazyFileRoute("/$account/_app")({ component: Screen, }); function Screen() { const context = Route.useRouteContext(); const transparent = useStore(appSettings, (state) => state.transparent); return (
); } const Account = memo(function Account() { const params = Route.useParams(); const navigate = Route.useNavigate(); const showContextMenu = useCallback( async (e: React.MouseEvent) => { e.preventDefault(); const menuItems = await Promise.all([ MenuItem.new({ text: "New Post", action: () => LumeWindow.openEditor(), }), MenuItem.new({ text: "Profile", action: () => LumeWindow.openProfile(params.account), }), MenuItem.new({ text: "Settings", action: () => LumeWindow.openSettings(params.account), }), PredefinedMenuItem.new({ item: "Separator" }), MenuItem.new({ text: "Copy Public Key", action: async () => await writeText(params.account), }), MenuItem.new({ text: "Logout", action: () => navigate({ to: "/" }), }), ]); const menu = await Menu.new({ items: menuItems, }); await menu.popup().catch((e) => console.error(e)); }, [params.account], ); return ( ); });