integratedhub/routes/index.tsx
2026-02-15 02:49:28 +00:00

79 lines
2.2 KiB
TypeScript
Executable File

// routes/index.tsx
import { define, State } from "../utils.ts";
import GuestHome from "../islands/GuestHome.tsx";
import MemberHome from "../islands/MemberHome.tsx";
import { page } from "fresh";
import { SessionCookie } from "./auth/callback.ts";
import { createPublicId } from "../helpers.ts";
import { getOnboardingStatus } from "../services/onboardingService.ts";
const _authority = Deno.env.get("AUTHORITY")!;
const _clientId = Deno.env.get("CLIENT_ID")!;
const _redirectUri = Deno.env.get("REDIRECT_URI")!;
export const handler = define.handlers(async (ctx) => {
const state = ctx.state as State;
const stateData: SessionCookie = state.data ??
{
started_on: 0,
user_name: "",
user_id: "",
role: "",
user_encrypted: false,
};
const publicId = stateData.user_id
? await createPublicId(stateData.user_id)
: "";
const onboardingStatus = stateData.user_id
? await getOnboardingStatus(stateData.user_id)
: null;
const now = new Date();
return page({
stateData,
urlRoute: ctx.state.urlRoute,
publicId,
stateId: state.stateId,
onboardingStatus,
serverYear: now.getFullYear(),
serverCalendarYear: now.getFullYear(),
serverCalendarMonth: now.getMonth() + 1,
});
});
export default define.page(
(
{ data }: {
data: {
stateData: SessionCookie;
urlRoute: string;
publicId: string;
stateId: string;
onboardingStatus: Awaited<ReturnType<typeof getOnboardingStatus>>;
serverYear: number;
serverCalendarYear: number;
serverCalendarMonth: number;
};
},
) => {
return (
<main class="home-route">
<div class="w-full flex-1">
{data.stateData.user_id
? (
<MemberHome
onboardingStatus={data.onboardingStatus}
serverCalendarYear={data.serverCalendarYear}
serverCalendarMonth={data.serverCalendarMonth}
/>
)
: <GuestHome />}
</div>
<footer class="home-footer">
&copy; {data.serverYear} Cyber Hybrid Hub. All rights reserved.
</footer>
</main>
);
},
);