integratedhub/routes/index.tsx
2026-01-20 09:02:26 -06:00

65 lines
1.8 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 { getYear } from "../helpers.ts";
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;
return page({
stateData,
urlRoute: ctx.state.urlRoute,
publicId,
stateId: state.stateId,
onboardingStatus,
});
});
export default define.page(
(
{ data }: {
data: {
stateData: SessionCookie;
urlRoute: string;
publicId: string;
stateId: string;
onboardingStatus: Awaited<ReturnType<typeof getOnboardingStatus>>;
};
},
) => {
return (
<main class="min-h-screen bg-transparent flex flex-col items-center justify-start pt-0">
{data.stateData.user_id
? <MemberHome onboardingStatus={data.onboardingStatus} />
: <GuestHome />}
<footer class="fixed bottom-0 left-0 right-0 mt-10 text-cyan-400 text-xs text-center">
&copy; {getYear(new Date())} Cyber Hybrid Hub. All rights reserved.
</footer>
</main>
);
},
);