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',
});