import { Account, db } from '@/db' import { Card, List, ListItem, ListItemPrefix } from '@material-tailwind/react' import generator, { Entity } from 'megalodon' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { FaBell, FaGlobe, FaHouse, FaList, FaUsers } from 'react-icons/fa6' import { useIntl } from 'react-intl' import Jump from '../Jump' type LayoutProps = { children: React.ReactNode } export default function Layout({ children }: LayoutProps) { const router = useRouter() const { formatMessage } = useIntl() const [account, setAccount] = useState(null) const [lists, setLists] = useState>([]) const [openJump, setOpenJump] = useState(false) useHotkeys('ctrl+k', () => setOpenJump(current => !current)) useEffect(() => { if (router.query.id) { const f = async () => { const acct = await db.accounts.get(parseInt(router.query.id as string)) if (!acct) return setAccount(acct) } f() } }, [router.query.id]) useEffect(() => { if (!account) return const c = generator(account.sns, account.url, account.access_token, 'Whalebird') const f = async () => { const res = await c.getLists() setLists(res.data) } f() }, [account]) const pages = [ { id: 'home', title: formatMessage({ id: 'timeline.home' }), icon: , path: `/accounts/${router.query.id}/home` }, { id: 'notifications', title: formatMessage({ id: 'timeline.notifications' }), icon: , path: `/accounts/${router.query.id}/notifications` }, { id: 'local', title: formatMessage({ id: 'timeline.local' }), icon: , path: `/accounts/${router.query.id}/local` }, { id: 'public', title: formatMessage({ id: 'timeline.public' }), icon: , path: `/accounts/${router.query.id}/public` } ] return (
setOpenJump(false)} />

{account?.username}

@{account?.domain}

{pages.map(page => ( router.push(page.path)} className="sidebar-menu-item text-blue-100" > {page.icon} {page.title} ))} {lists.map(list => ( router.push({ pathname: `/accounts/${router.query.id}/list_${list.id}` })} className="sidebar-menu-item text-blue-100" > {list.title} ))}
{children}
) }