From 43a5fadbc8c00796506a790a68038268d381c0b4 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 16:50:17 +0100 Subject: [PATCH] fix: reorder prerequisites check before Services initialization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Éviter d'initialiser WebAssembly si les prérequis ne sont pas remplis - Réduire la consommation mémoire en vérifiant d'abord les prérequis légers - Éviter le router d'initialiser Services lors de la vérification du pairing **Modifications :** - Déplacer la vérification PBKDF2 AVANT l'initialisation de Services dans wallet-setup.ts - Supprimer l'initialisation de Services dans router.ts lors de la vérification du pairing - Router redirige maintenant directement vers home sans vérifier le pairing **Pages affectées :** - src/router.ts (supprime Services.getInstance() lors de la vérification du pairing) - src/pages/wallet-setup/wallet-setup.ts (vérifie prérequis avant Services) --- src/pages/wallet-setup/wallet-setup.ts | 52 ++++++++++++-------------- src/router.ts | 26 +++---------- 2 files changed, 29 insertions(+), 49 deletions(-) diff --git a/src/pages/wallet-setup/wallet-setup.ts b/src/pages/wallet-setup/wallet-setup.ts index d417d0a..dd6f625 100644 --- a/src/pages/wallet-setup/wallet-setup.ts +++ b/src/pages/wallet-setup/wallet-setup.ts @@ -48,10 +48,32 @@ document.addEventListener('DOMContentLoaded', async () => { } try { - // Étape 1: Initialisation des services - updateStatus('🔄 Initialisation des services...', 'loading'); + // Étape 1: Vérifier les prérequis AVANT d'initialiser Services + updateStatus('🔍 Vérification des prérequis...', 'loading'); updateProgress(10); + // CRITICAL: wallet-setup ne doit PAS générer de credentials + // Les credentials et clé PBKDF2 doivent être créés dans security-setup + // On vérifie que la clé PBKDF2 existe dans le store pbkdf2keys + console.log('🔐 Checking for existing PBKDF2 key in pbkdf2keys store...'); + + const pbkdf2KeyResult = await checkPBKDF2Key(); + if (!pbkdf2KeyResult) { + console.log('⚠️ No PBKDF2 key found in pbkdf2keys store, redirecting to security-setup...'); + updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading'); + setTimeout(() => { + window.location.href = '/src/pages/security-setup/security-setup.html'; + }, 1000); + return; + } + + const currentMode = pbkdf2KeyResult.mode; + console.log('✅ Prerequisites verified: PBKDF2 key found in pbkdf2keys store for mode:', currentMode); + + // Étape 2: Initialisation des services (uniquement si les prérequis sont OK) + updateStatus('🔄 Initialisation des services...', 'loading'); + updateProgress(20); + let services: any; // Déclarer services au niveau supérieur try { @@ -110,32 +132,6 @@ document.addEventListener('DOMContentLoaded', async () => { throw error; } - // Étape 2: Génération des credentials sécurisés - updateStatus('🔐 Génération des clés de sécurité...', 'loading'); - updateProgress(30); - - // Vérifier les prérequis en base de données - updateStatus('🔍 Vérification des prérequis...', 'loading'); - updateProgress(20); - - // CRITICAL: wallet-setup ne doit PAS générer de credentials - // Les credentials et clé PBKDF2 doivent être créés dans security-setup - // On vérifie que la clé PBKDF2 existe dans le store pbkdf2keys - console.log('🔐 Checking for existing PBKDF2 key in pbkdf2keys store...'); - - const pbkdf2KeyResult = await checkPBKDF2Key(); - if (!pbkdf2KeyResult) { - console.log('⚠️ No PBKDF2 key found in pbkdf2keys store, redirecting to security-setup...'); - updateStatus('⚠️ Redirection vers la configuration de sécurité...', 'loading'); - setTimeout(() => { - window.location.href = '/src/pages/security-setup/security-setup.html'; - }, 1000); - return; - } - - const currentMode = pbkdf2KeyResult.mode; - console.log('✅ Prerequisites verified: PBKDF2 key found in pbkdf2keys store for mode:', currentMode); - // Étape 3: Sauvegarde du wallet avec état birthday_waiting updateStatus('💰 Sauvegarde du portefeuille...', 'loading'); updateProgress(60); diff --git a/src/router.ts b/src/router.ts index 90e9ef8..49a8e33 100755 --- a/src/router.ts +++ b/src/router.ts @@ -62,27 +62,11 @@ export async function checkStorageStateAndNavigate(): Promise { // Vérifier si la date anniversaire est configurée (wallet avec birthday > 0) if (device.sp_wallet.birthday && device.sp_wallet.birthday > 0) { - console.log('🎂 Birthday is configured, checking pairing status...'); - - // Vérifier l'état du pairing (nécessite Services mais seulement si tout est prêt) - try { - const services = await Services.getInstance(); - const isPaired = services.isPaired(); - - if (isPaired) { - console.log('✅ Device is paired, navigating to account page'); - await navigate('account'); - return; - } - - console.log('🔗 Not paired yet, navigating to pairing'); - await navigate('home'); - return; - } catch (error) { - console.log('⚠️ Could not check pairing status, navigating to home'); - await navigate('home'); - return; - } + console.log('🎂 Birthday is configured, navigating to pairing'); + // Ne pas vérifier le pairing ici pour éviter d'initialiser WebAssembly + // La page home.ts vérifiera le pairing si nécessaire + await navigate('home'); + return; } // Wallet existe mais birthday pas configuré