aboutsummaryrefslogtreecommitdiffstats
path: root/apps/kit/src/routes/(main)
diff options
context:
space:
mode:
Diffstat (limited to 'apps/kit/src/routes/(main)')
-rw-r--r--apps/kit/src/routes/(main)/+layout.server.ts15
-rw-r--r--apps/kit/src/routes/(main)/+layout.svelte23
-rw-r--r--apps/kit/src/routes/(main)/+layout.ts22
3 files changed, 35 insertions, 25 deletions
diff --git a/apps/kit/src/routes/(main)/+layout.server.ts b/apps/kit/src/routes/(main)/+layout.server.ts
index 6bc7071..d2eb2eb 100644
--- a/apps/kit/src/routes/(main)/+layout.server.ts
+++ b/apps/kit/src/routes/(main)/+layout.server.ts
@@ -3,8 +3,9 @@ import { logError } from "$lib/logger";
import { error, redirect } from "@sveltejs/kit";
import type { LayoutServerLoad } from "./$types";
-export const load: LayoutServerLoad = async ({ routeId, cookies }) => {
- const isPublicRoute = routeId?.startsWith("(main)/(public)") ?? true;
+export const load: LayoutServerLoad = async ({ routeId, cookies, locals }) => {
+ const isPublicRoute = (routeId?.startsWith("(main)/(public)") || routeId === "(main)") ?? true;
+
let sessionIsValid = (await fetch(api_base("_/valid-session"), {
headers: {
Cookie: CookieNames.session + "=" + cookies.get(CookieNames.session)
@@ -15,9 +16,19 @@ export const load: LayoutServerLoad = async ({ routeId, cookies }) => {
message: "We are experiencing a service distruption! Have patience while we resolve the issue."
})
})).ok;
+
+ console.log("Base Layout loaded", {
+ sessionIsValid,
+ isPublicRoute,
+ routeId
+ });
+
if (sessionIsValid && isPublicRoute) {
throw redirect(302, "/home");
} else if (!sessionIsValid && !isPublicRoute) {
throw redirect(302, "/sign-in");
}
+ return {
+ locale: locals.locale
+ }
}; \ No newline at end of file
diff --git a/apps/kit/src/routes/(main)/+layout.svelte b/apps/kit/src/routes/(main)/+layout.svelte
index 5354f02..236cd75 100644
--- a/apps/kit/src/routes/(main)/+layout.svelte
+++ b/apps/kit/src/routes/(main)/+layout.svelte
@@ -1,32 +1,23 @@
<script lang="ts">
import "../../app.pcss";
import { setLocale } from "$lib/i18n/i18n-svelte";
+ import LocaleSwitcher from "$lib/components/locale-switcher.svelte";
+ import { ExclamationTriangleIcon } from "$lib/components/icons";
import type { LayoutData } from "./$types";
let online = true;
export let data: LayoutData;
-
+ // at the very top, set the locale before you access the store and before the actual rendering takes place
setLocale(data.locale);
</script>
<svelte:window bind:online />
+
{#if !online}
- <div class="bg-yellow-50 relative z-50 border-yellow-400 p-4">
+ <div class="bg-yellow-50 relative z-50 p-4">
<div class="flex">
<div class="flex-shrink-0">
- <svg
- class="h-5 w-5 text-yellow-400"
- xmlns="http://www.w3.org/2000/svg"
- viewBox="0 0 20 20"
- fill="currentColor"
- aria-hidden="true"
- >
- <path
- fill-rule="evenodd"
- d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z"
- clip-rule="evenodd"
- />
- </svg>
+ <ExclamationTriangleIcon class="bg-yellow-400" />
</div>
<div class="ml-3">
<p class="text-sm text-yellow-700">You seem to be offline, please check your internet connection.</p>
@@ -34,4 +25,6 @@
</div>
</div>
{/if}
+
+<LocaleSwitcher />
<slot />
diff --git a/apps/kit/src/routes/(main)/+layout.ts b/apps/kit/src/routes/(main)/+layout.ts
index 13837be..5d0e005 100644
--- a/apps/kit/src/routes/(main)/+layout.ts
+++ b/apps/kit/src/routes/(main)/+layout.ts
@@ -1,9 +1,15 @@
-import type { Locales } from "$lib/i18n/i18n-types";
-import { loadLocaleAsync } from "$lib/i18n/i18n-util.async";
-import type { LayoutLoad } from "./$types";
+import type { LayoutLoad } from './$types'
+import type { Locales } from '$lib/i18n/i18n-types'
+import { loadLocaleAsync } from '$lib/i18n/i18n-util.async'
+import { setLocale } from '$lib/i18n/i18n-svelte'
-export const load: LayoutLoad<{ locale: Locales }> = async ({ url, params }) => {
- let lang = "en" as Locales;
- await loadLocaleAsync(lang);
- return { locale: lang };
-};
+export const load: LayoutLoad<{ locale: Locales }> = async ({ data: { locale } }) => {
+ // load dictionary into memory
+ await loadLocaleAsync(locale)
+
+ // if you need to output a localized string in a `load` function,
+ // you always need to call `setLocale` right before you access the `LL` store
+ setLocale(locale)
+ // pass locale to the "rendering context"
+ return { locale }
+} \ No newline at end of file