feat: setup drizzle (#594)
* chore: migration to SvelteKit 2 * stage 1: migrate to svelte 5 and fix rerendering issues * stage 2: fix more $: reactivity across dashboard * fix merge conflicts * chore: migrate code in main to svelte 5 * chore: update preventDefault * chore: simplify tsconfig and remove unused mobileMenuRef in MobileMenu.svelte * chore: enforce .ts across dashboard * rename from classroomio-com to website * stage-3: Replace carbon icon svelte with lucide icon * update lock file * chore: finish icon replacement * fix: settings and setup page multiple rerender * stage 3: More icon and rerendering fixes * feat: setup drizzle and better auth * fix: onboarding validation error showing translation key #586 (#593) * fix: onboarding validation error showing translation key #586 * fix: remove debug log for profile update errors * chore: add a clean command * fix: remove message from email verification response
This commit is contained in:
@@ -26,6 +26,6 @@ export const load = async ({ params = { hash: '' } }) => {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error decoding course invite params.hash', error);
|
||||
throw redirect(307, '/404');
|
||||
redirect(307, '/404');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -10,21 +10,18 @@
|
||||
import type { CurrentOrg } from '$lib/utils/types/org.js';
|
||||
import { ROLE } from '$lib/utils/constants/roles';
|
||||
import { profile } from '$lib/utils/store/user';
|
||||
import {
|
||||
triggerSendEmail,
|
||||
NOTIFICATION_NAME
|
||||
} from '$lib/utils/services/notification/notification';
|
||||
import { triggerSendEmail, NOTIFICATION_NAME } from '$lib/utils/services/notification/notification';
|
||||
import { snackbar } from '$lib/components/Snackbar/store.js';
|
||||
import { capturePosthogEvent } from '$lib/utils/services/posthog';
|
||||
import { page } from '$app/stores';
|
||||
|
||||
export let data;
|
||||
let { data } = $props();
|
||||
|
||||
let supabase = getSupabase();
|
||||
let loading = false;
|
||||
let loading = $state(false);
|
||||
|
||||
let disableSubmit = false;
|
||||
let formRef: HTMLFormElement;
|
||||
let formRef: HTMLFormElement = $state();
|
||||
|
||||
async function handleSubmit() {
|
||||
loading = true;
|
||||
@@ -34,11 +31,7 @@
|
||||
return goto(`/signup?redirect=${$page.url?.pathname || ''}`);
|
||||
}
|
||||
|
||||
const { data: courseData, error } = await supabase
|
||||
.from('course')
|
||||
.select('group_id')
|
||||
.eq('id', data.id)
|
||||
.single();
|
||||
const { data: courseData, error } = await supabase.from('course').select('group_id').eq('id', data.id).single();
|
||||
|
||||
console.log({ courseData });
|
||||
if (!courseData?.group_id) {
|
||||
@@ -118,9 +111,8 @@
|
||||
|
||||
onMount(async () => {
|
||||
setTheme(data.currentOrg?.theme || '');
|
||||
setCurOrg(data.currentOrg as CurrentOrg);
|
||||
});
|
||||
|
||||
$: setCurOrg(data.currentOrg as CurrentOrg);
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
||||
@@ -31,6 +31,6 @@ export const load = async ({ params = { hash: '' } }) => {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error decoding invite params.hash', error);
|
||||
throw redirect(307, '/404');
|
||||
redirect(307, '/404');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { goto } from '$app/navigation';
|
||||
import { page } from '$app/stores';
|
||||
import { page } from '$app/state';
|
||||
import AuthUI from '$lib/components/AuthUI/index.svelte';
|
||||
import type { Profile } from '$lib/components/Course/components/People/types';
|
||||
import TextField from '$lib/components/Form/TextField.svelte';
|
||||
@@ -12,34 +11,31 @@
|
||||
import { setTheme } from '$lib/utils/functions/theme';
|
||||
import { t } from '$lib/utils/functions/translations';
|
||||
import { profile, user } from '$lib/utils/store/user';
|
||||
import {
|
||||
authValidation,
|
||||
getConfirmPasswordError,
|
||||
getDisableSubmit
|
||||
} from '$lib/utils/functions/validator';
|
||||
import { authValidation, getConfirmPasswordError, getDisableSubmit } from '$lib/utils/functions/validator';
|
||||
import { currentOrg, currentOrgPath } from '$lib/utils/store/org';
|
||||
import type { CurrentOrg } from '$lib/utils/types/org';
|
||||
import { onMount } from 'svelte';
|
||||
import { onMount, untrack } from 'svelte';
|
||||
import { snackbar } from '$lib/components/Snackbar/store.js';
|
||||
|
||||
export let data;
|
||||
let { data } = $props();
|
||||
|
||||
let supabase = getSupabase();
|
||||
let fields = Object.assign({}, SIGNUP_FIELDS);
|
||||
let loading = false;
|
||||
let isLoggingOut = false;
|
||||
let shouldLogout = false;
|
||||
let fields = $state(Object.assign({}, SIGNUP_FIELDS));
|
||||
let loading = $state(false);
|
||||
let isLoggingOut = $state(false);
|
||||
let shouldLogout = $state(false);
|
||||
|
||||
let errors: {
|
||||
name?: string;
|
||||
email?: string;
|
||||
password?: string;
|
||||
confirmPassword?: string;
|
||||
} = {};
|
||||
} = $state({});
|
||||
|
||||
let submitError: string;
|
||||
let disableSubmit = false;
|
||||
let formRef: HTMLFormElement;
|
||||
let submitError: string = $state('');
|
||||
let formRef: HTMLFormElement | undefined = $state();
|
||||
|
||||
const confirmPasswordError = $derived(getConfirmPasswordError(fields));
|
||||
const disableSubmit = $derived(getDisableSubmit(fields));
|
||||
|
||||
async function joinOrg(profileId: string, email: string) {
|
||||
if (!profileId || !email || !data.invite.currentOrg?.id) return;
|
||||
@@ -163,23 +159,20 @@
|
||||
setCurOrg(data.invite.currentOrg as CurrentOrg);
|
||||
});
|
||||
|
||||
$: errors.confirmPassword = getConfirmPasswordError(fields);
|
||||
$: disableSubmit = getDisableSubmit(fields);
|
||||
const isLoading = $derived(loading || $user.fetchingUser);
|
||||
|
||||
$: autoLogout($profile?.email);
|
||||
function autoLogout(email?: string) {
|
||||
$effect(() => {
|
||||
const email = $profile?.email;
|
||||
if (!email) return;
|
||||
|
||||
if (email !== data.invite.email) {
|
||||
console.log('logout');
|
||||
snackbar.error('You are logged in with a different email');
|
||||
shouldLogout = true;
|
||||
untrack(() => {
|
||||
shouldLogout = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$: isLoading = loading || $user.fetchingUser;
|
||||
$: console.log('$profile', $profile);
|
||||
$: console.log('data.invite', data.invite);
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
@@ -188,7 +181,7 @@
|
||||
|
||||
<AuthUI
|
||||
{supabase}
|
||||
redirectPathname={$page.url.pathname}
|
||||
redirectPathname={page.url.pathname}
|
||||
isLogin={false}
|
||||
{handleSubmit}
|
||||
{isLoading}
|
||||
@@ -248,7 +241,7 @@
|
||||
className="mb-6"
|
||||
inputClassName="w-full"
|
||||
isDisabled={isLoading}
|
||||
errorMessage={errors.confirmPassword}
|
||||
errorMessage={confirmPasswordError}
|
||||
isRequired
|
||||
/>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user