From d3c1a7249e9f0ef15282605eff89d9d352468a2d Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Tue, 16 Jan 2024 15:13:37 +0000 Subject: [PATCH] forceRedirect --- src/routes/+layout.ts | 5 +++++ src/routes/login/+page.svelte | 10 +++++++++- src/routes/register/+page.svelte | 8 ++++++++ src/routes/store.ts | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 1b7b099e2d..755c0390b8 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -6,12 +6,17 @@ import { sdk } from '$lib/stores/sdk'; import { redirect } from '@sveltejs/kit'; import { Dependencies } from '$lib/constants'; import type { LayoutLoad } from './$types'; +import { redirectTo } from './store'; export const ssr = false; export const load: LayoutLoad = async ({ depends, url }) => { depends(Dependencies.ACCOUNT); + redirectTo.set(url.searchParams.get('forceRedirect') || null); + + url.searchParams.delete('forceRedirect'); + try { const account = await sdk.forConsole.account.get<{ organization?: string }>(); diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index a460622880..dd06e42c4a 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -16,6 +16,7 @@ import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; import { isCloud } from '$lib/system'; import { page } from '$app/stores'; + import { redirectTo } from '$routes/store'; let mail: string, pass: string, disabled: boolean; @@ -23,12 +24,18 @@ try { disabled = true; await sdk.forConsole.account.createEmailSession(mail, pass); - await invalidate(Dependencies.ACCOUNT); addNotification({ type: 'success', message: 'Successfully logged in.' }); + if ($redirectTo) { + window.location.href = $redirectTo; + return; + } + + await invalidate(Dependencies.ACCOUNT); trackEvent(Submit.AccountCreate); + if ($page.url.searchParams) { const redirect = $page.url.searchParams.get('redirect'); $page.url.searchParams.delete('redirect'); @@ -52,6 +59,7 @@ function onGithubLogin() { let url = window.location.origin; + if ($page.url.searchParams) { const redirect = $page.url.searchParams.get('redirect'); $page.url.searchParams.delete('redirect'); diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte index f2c15e4f30..c17aaf9625 100644 --- a/src/routes/register/+page.svelte +++ b/src/routes/register/+page.svelte @@ -19,6 +19,7 @@ import { ID } from '@appwrite.io/console'; import { isCloud } from '$lib/system'; import { page } from '$app/stores'; + import { redirectTo } from '$routes/store'; let name: string, mail: string, pass: string, disabled: boolean; let terms = false; @@ -28,7 +29,14 @@ disabled = true; await sdk.forConsole.account.create(ID.unique(), mail, pass, name ?? ''); await sdk.forConsole.account.createEmailSession(mail, pass); + + if ($redirectTo) { + window.location.href = $redirectTo; + return; + } + await invalidate(Dependencies.ACCOUNT); + if ($page.url.searchParams) { const redirect = $page.url.searchParams.get('redirect'); $page.url.searchParams.delete('redirect'); diff --git a/src/routes/store.ts b/src/routes/store.ts index 5c5fe880de..cf8ef1f3bb 100644 --- a/src/routes/store.ts +++ b/src/routes/store.ts @@ -1,5 +1,5 @@ import { writable } from 'svelte/store'; export const loading = writable(true); - export const requestedMigration = writable | null>(null); +export const redirectTo = writable(null);