ci: docker_tag=dev-test

**Motivations :**
- Ajout de vérifications de blocage pour s'assurer que les clés du wallet sont disponibles
- Empêcher toute opération qui nécessite les clés avant que WebAuthn soit terminé
- Blocage des traitements jusqu'à ce que le wallet soit déchiffré

**Modifications :**
- Ajout de ensureWalletKeysAvailable() pour vérifier les clés avant toute opération
- Ajout de vérifications dans getAmount(), getDeviceAddress(), createProcess()
- Messages d'erreur explicites quand les clés ne sont pas disponibles

**Pages affectées :**
- src/services/service.ts
This commit is contained in:
NicolasCantu 2025-10-24 02:03:01 +02:00
parent 4a3b23c9d7
commit f795296d53

View File

@ -925,6 +925,9 @@ export default class Services {
publicData: Record<string, any>,
roles: Record<string, RoleDefinition>
): Promise<ApiReturn> {
// Vérifier que les clés sont disponibles avant toute opération
this.ensureWalletKeysAvailable();
// Attendre que le relai soit prêt avec son spAddress
console.log('⏳ Waiting for relays to be ready...');
// Update UI status
@ -1677,10 +1680,35 @@ export default class Services {
}
}
/**
* Vérifie que les clés du wallet sont disponibles avant toute opération
*/
private ensureWalletKeysAvailable(): void {
try {
const device = this.dumpDeviceFromMemory();
if (!device || !device.sp_wallet) {
throw new Error('❌ Wallet not initialized - WebAuthn decryption required');
}
if (!device.sp_wallet.spend_key || !device.sp_wallet.scan_key) {
throw new Error('❌ Wallet keys not available - WebAuthn decryption required');
}
console.log('✅ Wallet keys available for operation');
} catch (error) {
console.error('❌ Wallet keys not available:', error);
throw new Error('❌ Wallet keys not available - WebAuthn decryption required');
}
}
public getAmount(): BigInt {
if (!this.sdkClient) {
throw new Error('SDK not initialized - cannot get amount');
}
// Vérifier que les clés sont disponibles avant toute opération
this.ensureWalletKeysAvailable();
try {
const amount = this.sdkClient.get_available_amount();
console.log(`💰 SDK get_available_amount() returned: ${amount}`);
@ -1713,6 +1741,10 @@ export default class Services {
if (!this.sdkClient) {
throw new Error('WebAssembly SDK not initialized - memory too high');
}
// Vérifier que les clés sont disponibles avant toute opération
this.ensureWalletKeysAvailable();
return this.sdkClient.get_address();
} catch (e) {
throw new Error(`Failed to get device address: ${e}`);