From 92d1cac2543c51b1c94d2fa31c823f7bcd1ddaec Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Tue, 9 Sep 2025 03:03:02 +0200 Subject: [PATCH] Fix sign up loading page --- web/components/auth-context.tsx | 2 +- web/components/widgets/editor.tsx | 2 +- web/pages/register.tsx | 28 +++++++++++++-------- web/pages/signup.tsx | 42 ++++++++++++++++++++++--------- 4 files changed, 50 insertions(+), 24 deletions(-) diff --git a/web/components/auth-context.tsx b/web/components/auth-context.tsx index 116da28f..76c977c4 100644 --- a/web/components/auth-context.tsx +++ b/web/components/auth-context.tsx @@ -20,7 +20,7 @@ import { getPrivateUserSafe, getUserSafe } from 'web/lib/supabase/users' import { useWebsocketPrivateUser, useWebsocketUser } from 'web/hooks/use-user' import { identifyUser, setUserProperty } from 'web/lib/service/analytics' -// Either we haven't looked up the logged in user yet (undefined), or we know +// Either we haven't looked up the logged-in user yet (undefined), or we know // the user is not logged in (null), or we know the user is logged in. export type AuthUser = | undefined diff --git a/web/components/widgets/editor.tsx b/web/components/widgets/editor.tsx index d1f22f63..07a5118d 100644 --- a/web/components/widgets/editor.tsx +++ b/web/components/widgets/editor.tsx @@ -259,7 +259,7 @@ export function Content(props: { return typeof content === 'string' ? ( ) : ( diff --git a/web/pages/register.tsx b/web/pages/register.tsx index 16553643..bd167da1 100644 --- a/web/pages/register.tsx +++ b/web/pages/register.tsx @@ -1,6 +1,6 @@ "use client"; -import {Suspense, useState} from "react"; +import {Suspense, useEffect, useState} from "react"; import Link from "next/link"; import {FcGoogle} from "react-icons/fc"; import {useSearchParams} from "next/navigation"; @@ -13,6 +13,7 @@ import {LovePage} from "web/components/love-page"; import {getLoverRow} from "common/love/lover"; import {db} from "web/lib/supabase/db"; import Router from "next/router"; +import {useUser} from "web/hooks/use-user"; export default function RegisterPage() { @@ -31,24 +32,32 @@ function RegisterComponent() { const [isLoading, setIsLoading] = useState(false); const [registrationSuccess, setRegistrationSuccess] = useState(false); const [registeredEmail, setRegisteredEmail] = useState(''); + const user = useUser() // function redirect() { // // Redirect to complete profile page // window.location.href = href; // } + useEffect(() => { + const checkLoverAndRedirect = async () => { + if (user) { + const lover = await getLoverRow(user.id, db) + if (lover) { + await Router.push('/') + } else { + await Router.push('/signup') + } + setIsLoading(false); + } + } + checkLoverAndRedirect() + }, [user]); + const handleEmailPasswordSignUp = async (email: string, password: string) => { try { const creds = await createUserWithEmailAndPassword(auth, email, password); console.log("User signed up:", creds.user); - await Router.push('/') - const userId = creds?.user.uid - if (userId) { - const lover = await getLoverRow(userId, db) - if (!lover) { - await Router.push('/signup') - } - } } catch (error) { console.error("Error signing up:", error); if (error instanceof Error && error.message.includes("email-already-in-use")) { @@ -94,7 +103,6 @@ function RegisterComponent() { } catch (error) { handleError(error); - } finally { setIsLoading(false); } } diff --git a/web/pages/signup.tsx b/web/pages/signup.tsx index 37d4c826..81765301 100644 --- a/web/pages/signup.tsx +++ b/web/pages/signup.tsx @@ -4,10 +4,9 @@ import {initialRequiredState, RequiredLoveUserForm,} from 'web/components/requir import {OptionalLoveUserForm} from 'web/components/optional-lover-form' import {useUser} from 'web/hooks/use-user' import {LoadingIndicator} from 'web/components/widgets/loading-indicator' -import {GoogleSignInButton} from 'web/components/buttons/sign-up-button' -import {CACHED_REFERRAL_USERNAME_KEY, firebaseLogin,} from 'web/lib/firebase/users' +import {CACHED_REFERRAL_USERNAME_KEY,} from 'web/lib/firebase/users' import {api} from 'web/lib/api' -import {useRouter} from 'next/router' +import Router, {useRouter} from 'next/router' import ManifoldLoveLogo from 'web/components/manifold-love-logo' import {useTracking} from 'web/hooks/use-tracking' import {track} from 'web/lib/service/analytics' @@ -15,10 +14,13 @@ import {safeLocalStorage} from 'web/lib/util/local' import {removeUndefinedProps} from 'common/util/object' import {useLoverByUserId} from 'web/hooks/use-lover' import {LoverRow} from 'common/love/lover' +import {LovePage} from "web/components/love-page"; +import {Button} from "web/components/buttons/button"; export default function SignupPage() { const [step, setStep] = useState(0) const user = useUser() + console.log('user:', user) const router = useRouter() useTracking('view love signup page') @@ -40,17 +42,38 @@ export default function SignupPage() { } }, [existingLover]) + if (step === 1 && user) { + return + + + + + } + return ( {user === undefined ? (
) : user === null ? ( - - + + ) : ( - + {step === 0 ? ( ) : step === 1 ? ( - + <> ) : ( )}