Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -236,14 +236,14 @@ const ContactInfo = ({isSocialEnabled = false, idps = [], onRegisteredUserChoseG

// Handle OTP verification
const handleOtpVerification = async (otpCode) => {
let basketId
try {
// Prevent post-auth recovery effect from also attempting merge in this flow
hasAttemptedRecoveryRef.current = true
await loginPasswordless.mutateAsync({pwdlessLoginToken: otpCode})

// Successful OTP verification - user is now logged in
const hasBasketItem = basket.productItems?.length > 0
let basketId
if (hasBasketItem) {
// Mirror legacy checkout flow header and await completion
const merged = await mergeBasket.mutateAsync({
Expand All @@ -254,20 +254,20 @@ const ContactInfo = ({isSocialEnabled = false, idps = [], onRegisteredUserChoseG
createDestinationBasket: true
}
})
const mergedBasketId = merged?.basketId
const refreshedBasketId = await currentBasketQuery.refetch()
basketId = refreshedBasketId?.data?.basketId || mergedBasketId || basket.basketId
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If merge basket fails for whatever reason, then we don't have a basket in context to go further. We should at least keep the basket.basket.Id if we feel strongly about removing the basket refetch.

basketId = merged?.basketId || basket.basketId
}

// Update basket with email after successful OTP verification
const email = form.getValues('email')
try {
await updateCustomerForBasket.mutateAsync({
parameters: {basketId: basketId},
body: {email}
})
} catch (error) {
setError(error.message)
if (basketId && email) {
try {
await updateCustomerForBasket.mutateAsync({
parameters: {basketId: basketId},
body: {email}
})
} catch (error) {
setError(error.message)
}
}

// Reset guest checkout flag since user is now logged in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ describe('ContactInfo Component', () => {
await user.click(emailInput)
await user.tab()

expect(screen.getAllByText('Please enter your email address.')).toHaveLength(2)
expect(screen.getByText('Please enter your email address.')).toBeInTheDocument()
})

test('validates email format on form submission', async () => {
Expand Down Expand Up @@ -442,10 +442,9 @@ describe('ContactInfo Component', () => {
await screen.findByTestId('otp-verify')
await user.click(screen.getByTestId('otp-verify'))

// Assert: merge called, refetch performed, email updated with merged id
// Assert: merge called, email updated with merged id
await waitFor(() => {
expect(mockMergeBasket.mutateAsync).toHaveBeenCalled()
expect(refetchSpy).toHaveBeenCalled()
expect(mockUpdateCustomerForBasket.mutateAsync).toHaveBeenCalledWith({
parameters: {basketId: mergedId},
body: {email: 'test@salesforce.com'}
Expand Down
Loading