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:
parent
4a3b23c9d7
commit
f795296d53
@ -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}`);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user