From 6561771c435f9d9bed1589b5ed13d17aee0b7873 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 11 Dec 2022 20:46:58 +0100 Subject: feat: Add frontpage --- code/app/src/routes/(main)/+layout.server.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'code/app/src/routes/(main)/+layout.server.ts') diff --git a/code/app/src/routes/(main)/+layout.server.ts b/code/app/src/routes/(main)/+layout.server.ts index 086d1c0..4199d7f 100644 --- a/code/app/src/routes/(main)/+layout.server.ts +++ b/code/app/src/routes/(main)/+layout.server.ts @@ -4,12 +4,15 @@ import {error, redirect} from "@sveltejs/kit"; import {Temporal} from "temporal-polyfill"; import type {LayoutServerLoad} from "./$types"; -export const load: LayoutServerLoad = async ({route, cookies, locals}) => { +export const load: LayoutServerLoad = async ({url, request, route, cookies, locals, fetch}) => { + console.log(url.toString()); const isBaseRoute = route.id === "/(main)"; const isPublicRoute = (route.id?.startsWith("/(main)/(public)") || isBaseRoute) ?? true; - const sessionIsValid = (await cached_result("sessionCheck", 120, () => fetch(api_base("_/valid-session"), { + const sessionCookieValue = cookies.get(CookieNames.session); + const hasSessionCookie = (sessionCookieValue?.length > 0 ?? false); + const sessionIsValid = hasSessionCookie && (await cached_result_async("sessionCheck", 120, () => fetch(api_base("_/is-authenticated"), { headers: { - Cookie: CookieNames.session + "=" + cookies.get(CookieNames.session), + Cookie: CookieNames.session + "=" + sessionCookieValue, }, }).catch((e) => { log_error(e); @@ -37,7 +40,7 @@ export const load: LayoutServerLoad = async ({route, cookies, locals}) => { let resultCache = {}; -async function cached_result(key: string, staleAfterSeconds: number, code: any) { +async function cached_result_async(key: string, staleAfterSeconds: number, get_result: any, forceRefresh: boolean = false) { if (!resultCache[key]) { resultCache[key] = { l: 0, @@ -45,13 +48,13 @@ async function cached_result(key: string, staleAfterSeconds: number, code: an }; } const staleEpoch = ((resultCache[key]?.l ?? 0) + staleAfterSeconds); - const isStale = staleEpoch < Temporal.Now.instant().epochSeconds; + const isStale = forceRefresh || (staleEpoch < Temporal.Now.instant().epochSeconds); if (isStale || !resultCache[key]?.c) { - resultCache[key].c = await code(); + resultCache[key].c = await get_result(); resultCache[key].l = Temporal.Now.instant().epochSeconds; } - log_debug("Ran cached_result", { + log_debug("Ran cached_result_async", { cacheKey: key, isStale, cache: resultCache[key], -- cgit v1.3