diff --git a/src/lib/events/events.ts b/src/lib/events/events.ts index f2e092d..57a1d8c 100644 --- a/src/lib/events/events.ts +++ b/src/lib/events/events.ts @@ -10,24 +10,28 @@ export interface StringEvent { } export enum Events { - LOAD_PAYLOAD = 'load_payload', - IFRAME_READY = 'ready', - IFRAME_RESIZE = 'resize', - IFRAME_CLOSE = 'close', - REQUEST_AUTHORIZE_USER = 'request_authorize_user', - RECEIVE_AUTHORIZE_USER = 'receive_authorize_user', - REQUEST_RETRY_LOGIN = 'request_retry_login', - RECEIVE_RETRY_LOGIN = 'receive_retry_login', - REQUEST_UPDATE_USER = 'request_update_user', - RECEIVE_UPDATE_USER = 'receive_update_user', - REQUEST_EMAIL_VERIFICATION = "request_email_verification", - RECEIVE_EMAIL_VERIFICATION = "receive_email_verification", + LOAD_PAYLOAD = "load_payload", + IFRAME_READY = "ready", + IFRAME_RESIZE = "resize", + IFRAME_CLOSE = "close", + REQUEST_AUTHORIZE_USER = "request_authorize_user", + RECEIVE_AUTHORIZE_USER = "receive_authorize_user", + REQUEST_RETRY_LOGIN = "request_retry_login", + RECEIVE_RETRY_LOGIN = "receive_retry_login", + REQUEST_UPDATE_USER = 'request_update_user', + RECEIVE_UPDATE_USER = 'receive_update_user', + REQUEST_EMAIL_VERIFICATION = "request_email_verification", + RECEIVE_EMAIL_VERIFICATION = "receive_email_verification", + REQUEST_EMAIL_PREVIEW = "request_email_preview", + RECEIVE_EMAIL_PREVIEW = "receive_email_preview", + REQUEST_DEVICE_VERIFICATION = "request_device_verification", + RECEIVE_DEVICE_VERIFICATION = "receive_device_verification", REQUEST_CONFIRM_TRANSACTION = "request_confirm_transaction", RECEIVE_CONFIRM_TRANSACTION = "receive_confirm_transaction", - REQUEST_QUOTE_START = "request_quote_start", - QUOTE_CHANGED = "quote_changed", - REQUEST_QUOTE_STOP = "request_quote_stop" -}; + REQUEST_QUOTE_START = "request_quote_start", + QUOTE_CHANGED = "quote_changed", + REQUEST_QUOTE_STOP = "request_quote_stop", +} export const sendEvent = (eventName: string, data?: any) => { const message = JSON.stringify({ diff --git a/src/lib/modals/onboarding/ResendEmailLink.svelte b/src/lib/modals/onboarding/CheckEmail.svelte similarity index 100% rename from src/lib/modals/onboarding/ResendEmailLink.svelte rename to src/lib/modals/onboarding/CheckEmail.svelte diff --git a/src/lib/modals/onboarding/Onboarding.svelte b/src/lib/modals/onboarding/Onboarding.svelte index 7dc08cc..64cb72b 100644 --- a/src/lib/modals/onboarding/Onboarding.svelte +++ b/src/lib/modals/onboarding/Onboarding.svelte @@ -8,7 +8,7 @@ import VerifyDevice from './VerifyDevice.svelte'; import { onMount } from 'svelte'; - import { modalManager, __user } from '$lib/stores'; + import { modalManager, __user, userEmailPreview } from '$lib/stores'; import { sdkService } from '$lib/services'; let action = authorizeWallet; // default component behavior: Show Authorize Wallet button @@ -36,18 +36,31 @@ if (user.status !== 'email_verified') return sendToEmailVerify(); else return sendToCheckout(); } catch (err: any) { - handleAuthError(err); + await handleAuthError(err); } } - function handleAuthError(err: any) { + async function handleAuthError(err: any) { if (err.code === 'INVALID_EMAIL') return sendToEmailVerify(); - if (err.code === 'UNPROCESSABLE_ENTITY') return sendToDeviceVerify(); + if (err.code === 'UNPROCESSABLE_ENTITY') return await sendToDeviceVerify(); // unhandled error. Improve the styling of this error message alert('An unexpected error has occurred. Please try again.'); } + const requestDeviceVerification = async () => { + try { + const { status } = await sdkService.requestDeviceVerification($__user.walletAddress); + + if (status === 'verified') { + sendToCheckout(); + } + } catch (e: any) { + console.error(e); + alert("Something went wrong. Please try again.") + } + } + const sendToEmailVerify = async () => { modalManager.set(VerifyEmailForm); }; @@ -56,7 +69,12 @@ modalManager.set(OrderDetails); }; - const sendToDeviceVerify = () => { + const sendToDeviceVerify = async () => { + const { email } = await sdkService.getUserEmailPreview($__user.walletAddress); + $userEmailPreview = email; + + requestDeviceVerification(); + modalManager.set(VerifyDevice); }; diff --git a/src/lib/modals/onboarding/VerifyDevice.svelte b/src/lib/modals/onboarding/VerifyDevice.svelte index 0c5fdad..d353bc2 100644 --- a/src/lib/modals/onboarding/VerifyDevice.svelte +++ b/src/lib/modals/onboarding/VerifyDevice.svelte @@ -1,44 +1,10 @@