Files
Compass/web/lib/util/signup.ts

55 lines
1.5 KiB
TypeScript

import {debug} from 'common/logger'
import {getProfileRowWithFrontendSupabase} from 'common/profiles/profile'
import Router from 'next/router'
import toast from 'react-hot-toast'
import {auth, firebaseLogin} from 'web/lib/firebase/users'
import {db} from 'web/lib/supabase/db'
import {safeLocalStorage} from 'web/lib/util/local'
export function setOnboardingFlag() {
debug('setOnboardingFlag')
safeLocalStorage?.setItem(`is-onboarding`, 'true')
}
export function clearOnboardingFlag() {
debug('clearOnboardingFlag')
safeLocalStorage?.removeItem(`is-onboarding`)
}
export function isOnboardingFlag() {
debug('isOnboardingFlag')
return safeLocalStorage?.getItem(`is-onboarding`)
}
export const googleSigninSignup = async () => {
try {
setOnboardingFlag()
const creds = await firebaseLogin()
await postSignupRedirect(creds?.user?.uid)
} catch (e: any) {
console.error(e)
toast.error('Failed to sign in: ' + e.message)
clearOnboardingFlag()
}
}
export async function startSignup() {
await Router.push('/register')
}
export async function postSignupRedirect(userId: string | undefined) {
debug('postSignupRedirect', userId)
if (userId) {
const profile = await getProfileRowWithFrontendSupabase(userId, db)
if (profile) {
// Account already exists
clearOnboardingFlag()
// force refresh of AuthContext to load user and privateUser
await auth.currentUser?.getIdToken(true)
await Router.push('/')
} else {
await Router.push('/onboarding')
}
}
}