From 84d9852aa2149724ca32fe69fbcc42e41f5cc5b8 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 22:18:40 +0100 Subject: [PATCH] Fix faucet timing - move to pairing page after credentials creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Le faucet s'exécute pendant birthday-setup mais les credentials n'existent pas encore - Cela cause des erreurs 'No credentials found' et 'WebAuthn decryption required' - Le faucet doit s'exécuter après la création des credentials dans la page de pairing **Modifications :** - src/services/service.ts : Désactivation de l'appel automatique du faucet dans updateDeviceBlockHeight() - src/services/service.ts : Rendre getTokensFromFaucet() public pour l'appeler depuis home.ts - src/pages/home/home.ts : Ajout de l'appel du faucet après la création des credentials **Pages affectées :** - src/services/service.ts : Amélioration de la gestion du faucet - src/pages/home/home.ts : Ajout de l'appel du faucet au bon moment --- src/pages/home/home.ts | 11 +++++++++++ src/services/service.ts | 18 ++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 885ec74..6dd270f 100755 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -723,6 +723,17 @@ async function handleMainPairing(): Promise { await secureCredentialsService.storeCredentials(credentialData, ''); console.log('✅ Credentials stored successfully'); + // Request faucet tokens now that credentials are available + console.log('🪙 Requesting faucet tokens for pairing...'); + try { + const services = await Services.getInstance(); + await services.getTokensFromFaucet(); + console.log('✅ Faucet tokens requested successfully'); + } catch (error) { + console.warn('⚠️ Failed to request faucet tokens:', error); + // Don't throw - this is not critical for pairing + } + // Decrypt and make keys available to SDK console.log('🔓 Decrypting credentials for SDK access...'); if (mainStatus) { diff --git a/src/services/service.ts b/src/services/service.ts index d70dae2..d195764 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -644,7 +644,7 @@ export default class Services { return res; } - private async getTokensFromFaucet(): Promise { + public async getTokensFromFaucet(): Promise { await this.ensureSufficientAmount(); } @@ -1717,14 +1717,14 @@ export default class Services { // Forcer la mise à jour des clés dans le SDK console.log('🔧 Forcing wallet keys update in SDK...'); - + // Injecter les clés directement dans le device en mémoire const deviceInMemory = this.dumpDeviceFromMemory(); if (deviceInMemory?.sp_wallet && credentials.spendKey && credentials.scanKey) { // Mettre à jour les clés dans le device en mémoire deviceInMemory.sp_wallet.spend_key = credentials.spendKey; deviceInMemory.sp_wallet.scan_key = credentials.scanKey; - + // Restaurer le device avec les clés mises à jour this.restoreDevice(deviceInMemory); console.log('✅ Wallet keys injected and device restored'); @@ -2362,15 +2362,9 @@ export default class Services { throw new Error(`Final save verification failed: expected last_scan ${this.currentBlockHeight}, got ${finalDevice?.sp_wallet?.last_scan}`); } - // Request faucet tokens for new wallet - console.log('🪙 Requesting faucet tokens for new wallet...'); - try { - await this.getTokensFromFaucet(); - console.log('✅ Faucet tokens requested successfully'); - } catch (error) { - console.warn('⚠️ Failed to request faucet tokens:', error); - // Don't throw - this is not critical for wallet creation - } + // Note: Faucet tokens will be requested later in the pairing process + // when credentials are available + console.log('🪙 Faucet tokens will be requested during pairing process'); console.log('✅ updateDeviceBlockHeight completed successfully for new device'); return;