import page, { RequestHandlerParams } from '/lib/page.ts'; import { Dashboard } from '/lib/types.ts'; import { DashboardModel } from '/lib/models/dashboard.ts'; import { AppConfig } from '/lib/config.ts'; import { html } from '/public/ts/utils/misc.ts'; import { basicLayoutResponse } from '/lib/utils/layout.tsx'; import Loading from '/components/Loading.ts'; const titlePrefix = 'Dashboard'; async function get({ request, match, user, session, isRunningLocally }: RequestHandlerParams) { if (!(await AppConfig.isAppEnabled('dashboard'))) { return new Response('Redirect', { status: 303, headers: { 'Location': `/` } }); } let userDashboard = await DashboardModel.getByUserId(user!.id); if (!userDashboard) { userDashboard = await DashboardModel.create(user!.id); } const htmlContent = defaultHtmlContent({ userDashboard }); return basicLayoutResponse(htmlContent, { currentPath: match.pathname.input, titlePrefix, match, request, user, session, isRunningLocally, }); } function defaultHtmlContent({ userDashboard }: { userDashboard: Dashboard }) { const initialNotes = userDashboard?.data?.notes || 'Jot down some notes here.'; return html`
${Loading()}
`; } export default page({ get, accessMode: 'user', });