Fix faucet timing - move to pairing page after credentials creation

**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
This commit is contained in:
NicolasCantu 2025-10-29 22:18:40 +01:00
parent d9125f52c6
commit 84d9852aa2
2 changed files with 17 additions and 12 deletions

View File

@ -723,6 +723,17 @@ async function handleMainPairing(): Promise<void> {
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) {

View File

@ -644,7 +644,7 @@ export default class Services {
return res;
}
private async getTokensFromFaucet(): Promise<void> {
public async getTokensFromFaucet(): Promise<void> {
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;