ihm_client/src/pages/birthday-setup/birthday-setup.ts
NicolasCantu 2f2088c8ea fix: resolve variable redeclaration error in birthday-setup
**Motivations :**
- Erreur de redéclaration des variables 'attempts' et 'maxAttempts' dans birthday-setup.ts
- Cela causait une erreur 500 lors du chargement du fichier TypeScript

**Modifications :**
- Renommage des variables dans la deuxième boucle d'attente pour éviter les conflits
- Utilisation de 'blockHeightAttempts' et 'blockHeightMaxAttempts' pour la boucle d'attente de la hauteur de bloc

**Pages affectées :**
- src/pages/birthday-setup/birthday-setup.ts (correction des variables redéclarées)
2025-10-28 13:43:34 +01:00

145 lines
5.8 KiB
TypeScript

/**
* Page de configuration de la date anniversaire
* Mise à jour de la date anniversaire et scan des blocs
*/
document.addEventListener('DOMContentLoaded', async () => {
console.log('🎂 Birthday setup page loaded');
const status = document.getElementById('status') as HTMLDivElement;
const progressBar = document.getElementById('progressBar') as HTMLDivElement;
const continueBtn = document.getElementById('continueBtn') as HTMLButtonElement;
try {
// Étape 1: Connexion aux relais
updateStatus('🌐 Connexion aux relais...', 'loading');
updateProgress(20);
try {
console.log('🔄 Importing services...');
const serviceModule = await import('../../services/service');
console.log('✅ Service module imported:', Object.keys(serviceModule));
// La classe Services est exportée par défaut
const Services = serviceModule.default;
if (!Services) {
throw new Error('Services class not found in default export');
}
console.log('🔄 Waiting for services to be ready...');
// Attendre que les services soient initialisés
let attempts = 0;
const maxAttempts = 30;
const delayMs = 2000;
let services;
while (attempts < maxAttempts) {
try {
console.log(`🔄 Attempting to get services (attempt ${attempts + 1}/${maxAttempts})...`);
services = await Services.getInstance();
console.log('✅ Services initialized successfully');
break;
} catch (error) {
console.log(`⏳ Services not ready yet (attempt ${attempts + 1}/${maxAttempts}):`, (error as Error).message);
attempts++;
if (attempts >= maxAttempts) {
throw new Error(`Services failed to initialize after ${maxAttempts} attempts.`);
}
await new Promise(resolve => setTimeout(resolve, delayMs));
}
}
if (!services) {
throw new Error('Services not initialized');
}
// Connexion aux relais
await services.connectAllRelays();
console.log('✅ Relays connected successfully');
// Étape 2: Mise à jour de la date anniversaire
updateStatus('🎂 Mise à jour de la date anniversaire...', 'loading');
updateProgress(40);
// Les relais sont déjà prêts après connectAllRelays
console.log('✅ Communication handshake completed');
// Attendre que la hauteur de bloc soit définie avant de mettre à jour la date anniversaire
updateStatus('⏳ Attente de la synchronisation avec le réseau...', 'loading');
let blockHeightAttempts = 0;
const blockHeightMaxAttempts = 30;
while (blockHeightAttempts < blockHeightMaxAttempts) {
const blockHeight = services.getCurrentBlockHeight();
if (blockHeight !== -1) {
console.log(`✅ Block height set: ${blockHeight}`);
break;
}
console.log(`⏳ Waiting for block height (attempt ${blockHeightAttempts + 1}/${blockHeightMaxAttempts})...`);
await new Promise(resolve => setTimeout(resolve, 100));
blockHeightAttempts++;
}
if (services.getCurrentBlockHeight() === -1) {
throw new Error('Failed to get block height from relay');
}
// Mettre à jour la date anniversaire du wallet
await services.updateDeviceBlockHeight();
console.log('✅ Birthday updated successfully');
// Étape 3: Scan des blocs
updateStatus('🔍 Scan des blocs en cours...', 'loading');
updateProgress(60);
// Effectuer le scan initial des blocs
await services.ensureCompleteInitialScan();
console.log('✅ Initial block scan completed');
// Étape 4: Synchronisation des processus
updateStatus('🔄 Synchronisation des processus...', 'loading');
updateProgress(80);
// Restaurer les processus depuis la base de données
await services.restoreProcessesFromDB();
console.log('✅ Process synchronization completed');
} catch (error) {
console.error('❌ Services not available:', error);
updateStatus('❌ Erreur: Services non disponibles', 'error');
throw error;
}
// Étape 5: Finalisation
updateStatus('✅ Configuration terminée avec succès!', 'success');
updateProgress(100);
// Activer le bouton continuer
continueBtn.disabled = false;
console.log('🎉 Birthday setup completed successfully');
} catch (error) {
console.error('❌ Error during birthday setup:', error);
updateStatus('❌ Erreur lors de la configuration de la date anniversaire', 'error');
}
// Gestion du bouton continuer
continueBtn.addEventListener('click', async () => {
console.log('🏠 Redirecting to main application...');
// Rediriger vers l'application principale
console.log('🎂 Birthday setup completed, checking storage state...');
const { checkStorageStateAndNavigate } = await import('../../router');
await checkStorageStateAndNavigate();
});
function updateStatus(message: string, type: 'loading' | 'success' | 'error') {
status.textContent = message;
status.className = `status ${type}`;
}
function updateProgress(percent: number) {
progressBar.style.width = `${percent}%`;
}
});