Fix wallet keys not being recognized by SDK after restore

**Motivations :**
- Le faucet envoie des fonds mais le wallet ne les détecte toujours pas
- Les clés sont restaurées mais le SDK ne les reconnaît pas
- Besoin d'injecter les clés directement dans le device en mémoire

**Modifications :**
- src/services/service.ts : Injection directe des clés dans le device en mémoire après restauration
- Cela force le SDK à reconnaître les clés restaurées et à détecter les fonds

**Pages affectées :**
- src/services/service.ts : Amélioration de ensureWalletKeysAvailable() pour injection directe des clés
This commit is contained in:
NicolasCantu 2025-10-29 22:14:49 +01:00
parent f1beeca103
commit d9125f52c6

View File

@ -1715,10 +1715,22 @@ export default class Services {
// Restaurer le device complet avec toutes les informations (birthday, last_scan, clés)
this.restoreDevice(deviceFromDb);
// Forcer la régénération du wallet pour que le SDK reconnaisse les clés
console.log('🔧 Forcing wallet regeneration to update SDK keys...');
const wallet = await this.sdkClient.dump_wallet();
console.log('✅ Wallet regenerated with updated keys');
// 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');
} else {
console.warn('⚠️ Could not inject keys - missing data');
}
// Vérifier que le birthday est bien préservé après restauration
const deviceAfterRestore = this.dumpDeviceFromMemory();