@@ -12,6 +12,7 @@ const watchModelInputs = Array.from(document.querySelectorAll('input[name="watch
1212const feedbackInput = document . getElementById ( 'preregister-feedback' ) ;
1313const PREREG_DRAFT_KEY = 'clawwatch-preregister-draft' ;
1414const PREREG_PENDING_KEY = 'clawwatch-preregister-pending' ;
15+ const XFOR_AUTH_CALLBACK_URL = 'https://xfor.bot/auth/callback' ;
1516
1617let supabaseClient = null ;
1718let hasShownThankYou = false ;
@@ -96,6 +97,17 @@ function hasPendingPreregistration() {
9697 }
9798}
9899
100+ function buildSharedAuthRedirectUrl ( ) {
101+ const { watchModels, feedback } = getFormState ( ) ;
102+ const params = new URLSearchParams ( {
103+ clawwatch_preregister : '1' ,
104+ return_to : `${ window . location . origin } ${ window . location . pathname } ?preregister=complete#preregister` ,
105+ watch_models : watchModels . join ( ',' ) ,
106+ feedback
107+ } ) ;
108+ return `${ XFOR_AUTH_CALLBACK_URL } ?${ params . toString ( ) } ` ;
109+ }
110+
99111function applyFormState ( metadata = { } ) {
100112 const selected = Array . isArray ( metadata . clawwatch_watch_models ) ? metadata . clawwatch_watch_models : [ ] ;
101113 const selectedSet = new Set ( selected ) ;
@@ -219,7 +231,7 @@ async function startGoogleSignIn() {
219231 saveDraftState ( ) ;
220232 setPendingPreregistration ( true ) ;
221233
222- const redirectTo = ` ${ window . location . origin } ${ window . location . pathname } ?preregister=complete#preregister` ;
234+ const redirectTo = buildSharedAuthRedirectUrl ( ) ;
223235 const { data, error } = await supabaseClient . auth . signInWithOAuth ( {
224236 provider : 'google' ,
225237 options : {
@@ -303,6 +315,15 @@ async function init() {
303315 } else {
304316 renderRegistered ( data . session . user ) ;
305317 }
318+ } else if ( preregComplete ) {
319+ if ( savedDraft ) {
320+ applyDraftState ( savedDraft ) ;
321+ }
322+ clearDraftState ( ) ;
323+ setPendingPreregistration ( false ) ;
324+ renderSignedOut ( ) ;
325+ setBanner ( "Thank you for your interest! We'll be back when the easy-to-install ClawWatch is here." , 'success' ) ;
326+ showThankYouModal ( ) ;
306327 } else {
307328 renderSignedOut ( ) ;
308329 }
0 commit comments