aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/routes/(main)/+layout.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'code/app/src/routes/(main)/+layout.server.ts')
-rw-r--r--code/app/src/routes/(main)/+layout.server.ts17
1 files changed, 10 insertions, 7 deletions
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<Response>("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<Response>("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<T>(key: string, staleAfterSeconds: number, code: any) {
+async function cached_result_async<T>(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<T>(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],