diff --git a/src/lib/stores/auth.ts b/src/lib/stores/auth.ts index 900ae63..1db1d4e 100644 --- a/src/lib/stores/auth.ts +++ b/src/lib/stores/auth.ts @@ -7,22 +7,28 @@ export const isAuthenticated = writable(false); const STORAGE_KEY = "dsec_session"; -export async function initAuth() { - const stored = localStorage.getItem(STORAGE_KEY); - if (stored) { - try { - const { token } = JSON.parse(stored); - const user = await query("users:getByToken", { token }); - if (user) { - currentUser.set(user as UserDoc); - isAuthenticated.set(true); - } else { +let initPromise: Promise | null = null; + +export function initAuth(): Promise { + if (initPromise) return initPromise; + initPromise = (async () => { + const stored = localStorage.getItem(STORAGE_KEY); + if (stored) { + try { + const { token } = JSON.parse(stored); + const user = await query("users:getByToken", { token }); + if (user) { + currentUser.set(user as UserDoc); + isAuthenticated.set(true); + } else { + localStorage.removeItem(STORAGE_KEY); + } + } catch { localStorage.removeItem(STORAGE_KEY); } - } catch { - localStorage.removeItem(STORAGE_KEY); } - } + })(); + return initPromise; } function setSession(result: { userId: string; token: string; name: string }, email: string) { diff --git a/src/routes/post/note/+page.svelte b/src/routes/post/note/+page.svelte index b704ad6..499d925 100644 --- a/src/routes/post/note/+page.svelte +++ b/src/routes/post/note/+page.svelte @@ -1,6 +1,6 @@