Skip to content

Commit fed4e50

Browse files
authored
fix(signup): refetch session data on signup (#1155)
1 parent 389456e commit fed4e50

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

apps/sim/app/(auth)/signup/signup-form.test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react'
66
import { useRouter, useSearchParams } from 'next/navigation'
77
import { beforeEach, describe, expect, it, vi } from 'vitest'
8-
import { client } from '@/lib/auth-client'
8+
import { client, useSession } from '@/lib/auth-client'
99
import SignupPage from '@/app/(auth)/signup/signup-form'
1010

1111
vi.mock('next/navigation', () => ({
@@ -22,6 +22,7 @@ vi.mock('@/lib/auth-client', () => ({
2222
sendVerificationOtp: vi.fn(),
2323
},
2424
},
25+
useSession: vi.fn(),
2526
}))
2627

2728
vi.mock('@/app/(auth)/components/social-login-buttons', () => ({
@@ -43,6 +44,9 @@ describe('SignupPage', () => {
4344
vi.clearAllMocks()
4445
;(useRouter as any).mockReturnValue(mockRouter)
4546
;(useSearchParams as any).mockReturnValue(mockSearchParams)
47+
;(useSession as any).mockReturnValue({
48+
refetch: vi.fn().mockResolvedValue({}),
49+
})
4650
mockSearchParams.get.mockReturnValue(null)
4751
})
4852

apps/sim/app/(auth)/signup/signup-form.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useRouter, useSearchParams } from 'next/navigation'
77
import { Button } from '@/components/ui/button'
88
import { Input } from '@/components/ui/input'
99
import { Label } from '@/components/ui/label'
10-
import { client } from '@/lib/auth-client'
10+
import { client, useSession } from '@/lib/auth-client'
1111
import { quickValidateEmail } from '@/lib/email/validation'
1212
import { createLogger } from '@/lib/logs/console/logger'
1313
import { cn } from '@/lib/utils'
@@ -82,6 +82,7 @@ function SignupFormContent({
8282
}) {
8383
const router = useRouter()
8484
const searchParams = useSearchParams()
85+
const { refetch: refetchSession } = useSession()
8586
const [isLoading, setIsLoading] = useState(false)
8687
const [, setMounted] = useState(false)
8788
const [showPassword, setShowPassword] = useState(false)
@@ -330,6 +331,15 @@ function SignupFormContent({
330331
return
331332
}
332333

334+
// Refresh session to get the new user data immediately after signup
335+
try {
336+
await refetchSession()
337+
logger.info('Session refreshed after successful signup')
338+
} catch (sessionError) {
339+
logger.error('Failed to refresh session after signup:', sessionError)
340+
// Continue anyway - the verification flow will handle this
341+
}
342+
333343
// For new signups, always require verification
334344
if (typeof window !== 'undefined') {
335345
sessionStorage.setItem('verificationEmail', emailValue)

apps/sim/app/(auth)/verify/use-verification.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { useEffect, useState } from 'react'
44
import { useRouter, useSearchParams } from 'next/navigation'
5-
import { client } from '@/lib/auth-client'
5+
import { client, useSession } from '@/lib/auth-client'
66
import { env, isTruthy } from '@/lib/env'
77
import { createLogger } from '@/lib/logs/console/logger'
88

@@ -34,6 +34,7 @@ export function useVerification({
3434
}: UseVerificationParams): UseVerificationReturn {
3535
const router = useRouter()
3636
const searchParams = useSearchParams()
37+
const { refetch: refetchSession } = useSession()
3738
const [otp, setOtp] = useState('')
3839
const [email, setEmail] = useState('')
3940
const [isLoading, setIsLoading] = useState(false)
@@ -136,16 +137,15 @@ export function useVerification({
136137
}
137138
}
138139

139-
// Redirect to proper page after a short delay
140140
setTimeout(() => {
141141
if (isInviteFlow && redirectUrl) {
142142
// For invitation flow, redirect to the invitation page
143-
router.push(redirectUrl)
143+
window.location.href = redirectUrl
144144
} else {
145145
// Default redirect to dashboard
146-
router.push('/workspace')
146+
window.location.href = '/workspace'
147147
}
148-
}, 2000)
148+
}, 1000)
149149
} else {
150150
logger.info('Setting invalid OTP state - API error response')
151151
const message = 'Invalid verification code. Please check and try again.'
@@ -233,7 +233,7 @@ export function useVerification({
233233
'requiresEmailVerification=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT'
234234

235235
const timeoutId = setTimeout(() => {
236-
router.push('/workspace')
236+
window.location.href = '/workspace'
237237
}, 1000)
238238

239239
return () => clearTimeout(timeoutId)

0 commit comments

Comments
 (0)