From 3ee99dea5ac45382deb53a14f9fabd41a6a999e4 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 22:32:56 +0100 Subject: [PATCH] Force wallet update in SDK after restoreDevice to recognize keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Les clés sont injectées correctement mais le SDK ne les reconnaît pas - has_spend_key: false, has_scan_key: false malgré l'injection des clés - restoreDevice() ne met pas à jour les clés dans le SDK **Modifications :** - src/services/service.ts : Ajout d'appel à dumpWallet() après restoreDevice() - dumpWallet() force la mise à jour des clés dans le SDK - Appliqué aux deux endroits où les clés sont injectées **Pages affectées :** - src/services/service.ts : Amélioration de ensureWalletKeysAvailable() pour forcer la mise à jour SDK --- src/services/service.ts | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/services/service.ts b/src/services/service.ts index 7cad307..57bcaf8 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -1715,9 +1715,15 @@ export default class Services { // Restaurer le device complet avec toutes les informations (birthday, last_scan, clés) this.restoreDevice(deviceFromDb); - + // Forcer la mise à jour des clés dans le SDK - console.log('🔧 Forcing wallet keys update in SDK...'); + console.log('🔧 Forcing wallet update in SDK...'); + try { + await this.dumpWallet(); + console.log('✅ Wallet updated in SDK'); + } catch (error) { + console.warn('⚠️ Failed to update wallet in SDK:', error); + } // Injecter les clés directement dans le device en mémoire const deviceInMemory = this.dumpDeviceFromMemory(); @@ -1726,16 +1732,26 @@ export default class Services { // spend_key doit être un objet {Secret: string} deviceInMemory.sp_wallet.spend_key = {Secret: credentials.spendKey}; deviceInMemory.sp_wallet.scan_key = credentials.scanKey; - + console.log('🔧 Injected keys:', { spend_key_type: typeof deviceInMemory.sp_wallet.spend_key, scan_key_type: typeof deviceInMemory.sp_wallet.scan_key, spend_key_secret: deviceInMemory.sp_wallet.spend_key?.Secret ? 'present' : 'missing' }); - - // Restaurer le device avec les clés mises à jour - this.restoreDevice(deviceInMemory); - console.log('✅ Wallet keys injected and device restored'); + + // Restaurer le device avec les clés mises à jour + this.restoreDevice(deviceInMemory); + + // Forcer la mise à jour des clés dans le SDK + console.log('🔧 Forcing wallet update in SDK...'); + try { + await this.dumpWallet(); + console.log('✅ Wallet updated in SDK'); + } catch (error) { + console.warn('⚠️ Failed to update wallet in SDK:', error); + } + + console.log('✅ Wallet keys injected and device restored'); } else { console.warn('⚠️ Could not inject keys - missing data'); }