From 68ecdf181fce3b5a4fb663e2bc571698d59fd942 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Wed, 27 Aug 2025 17:36:57 +0200 Subject: [PATCH] Make AuthModal works with decoupled Pairing creation --- src/sdk/AuthModal.tsx | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/sdk/AuthModal.tsx b/src/sdk/AuthModal.tsx index d25ff19b..34009241 100644 --- a/src/sdk/AuthModal.tsx +++ b/src/sdk/AuthModal.tsx @@ -70,6 +70,20 @@ export default function AuthModal({ isOpen, onClose }: AuthModalProps) { iframeRef.current.contentWindow!.postMessage({ type: 'GET_PAIRING_ID', accessToken: message.accessToken, messageId }, targetOrigin); break; } + + case 'PAIRING_CREATED': { + console.log('[AuthModal] PAIRING_CREATED:', message); + User.getInstance().setPairingId(message.userPairingId); + setAuthSuccess(true); + + setTimeout(() => { + setShowIframe(false); + setIsIframeReady(false); + setAuthSuccess(false); + onClose(); + }, 500); + break; + } case 'GET_PAIRING_ID': { User.getInstance().setPairingId(message.userPairingId); @@ -83,6 +97,36 @@ export default function AuthModal({ isOpen, onClose }: AuthModalProps) { }, 500); break; } + + case 'ERROR': { + console.error('[AuthModal] handleMessage: error', message); + if (message.messageId.includes('GET_PAIRING_ID')) { + // We are not paired yet + const accessToken = User.getInstance().getAccessToken(); + if (accessToken) { + // create a new pairing + const messageId = `CREATE_PAIRING_${uuidv4()}`; + iframeRef.current.contentWindow!.postMessage({ type: 'CREATE_PAIRING', accessToken, messageId }, targetOrigin); + } else { + // We don't have an access token + // Shouldn't happen + console.error('[AuthModal] handleMessage: error: we don\'t have an access token'); + setShowIframe(false); + setIsIframeReady(false); + setAuthSuccess(false); + onClose(); + } + } else if (message.messageId.includes('CREATE_PAIRING')) { + // Something went wrong while creating a pairing + // show stopper for now + console.error('[AuthModal] CREATE_PAIRING error:', message.error); + setShowIframe(false); + setIsIframeReady(false); + setAuthSuccess(false); + onClose(); + } + break; + } } }; window.addEventListener('message', handleMessage);