From b0694eba222da104ad3780fe4afd8316adfb44f8 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 12:35:42 +0100 Subject: [PATCH] fix: add retry mechanism for wallet retrieval in birthday-setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Le wallet disparaît parfois entre wallet-setup et birthday-setup à cause de problèmes de synchronisation - Il faut ajouter une logique de retry pour gérer les problèmes de synchronisation de la base de données - Donner plus de temps à la base de données pour synchroniser les données avant de rediriger **Modifications :** - Ajout d'une logique de retry dans birthday-setup.ts pour récupérer le wallet - Attente de 500ms entre chaque tentative (jusqu'à 5 tentatives) - Redirection vers wallet-setup seulement si le wallet n'est toujours pas trouvé après les retries - Cette logique permet de gérer les problèmes de synchronisation de la base de données **Pages affectées :** - src/pages/birthday-setup/birthday-setup.ts (logique de retry pour le wallet) --- src/pages/birthday-setup/birthday-setup.ts | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/pages/birthday-setup/birthday-setup.ts b/src/pages/birthday-setup/birthday-setup.ts index 8cd99f4..99daf96 100644 --- a/src/pages/birthday-setup/birthday-setup.ts +++ b/src/pages/birthday-setup/birthday-setup.ts @@ -64,15 +64,28 @@ document.addEventListener('DOMContentLoaded', async () => { return; } - // Vérifier que le wallet existe en base - const wallet = await services.getDeviceFromDatabase(); + // Vérifier que le wallet existe en base (avec plusieurs tentatives pour gérer les problèmes de synchronisation) + let wallet = await services.getDeviceFromDatabase(); if (!wallet) { - console.log('⚠️ Wallet not found, redirecting to wallet-setup...'); - updateStatus('⚠️ Redirection vers la configuration du wallet...', 'loading'); - setTimeout(() => { - window.location.href = '/src/pages/wallet-setup/wallet-setup.html'; - }, 1000); - return; + console.log('⚠️ Wallet not found, waiting for database synchronization...'); + // Attendre un peu pour la synchronisation de la base de données + for (let attempt = 0; attempt < 5; attempt++) { + await new Promise(resolve => setTimeout(resolve, 500)); + wallet = await services.getDeviceFromDatabase(); + if (wallet) { + console.log(`✅ Wallet found after ${attempt + 1} attempts`); + break; + } + } + + if (!wallet) { + console.log('⚠️ Wallet still not found after retries, redirecting to wallet-setup...'); + updateStatus('⚠️ Redirection vers la configuration du wallet...', 'loading'); + setTimeout(() => { + window.location.href = '/src/pages/wallet-setup/wallet-setup.html'; + }, 1000); + return; + } } console.log('✅ Wallet found in database'); console.log('✅ All prerequisites verified');