From d072eb08312a892f7f63258e1f219df5e8ed89c7 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Tue, 25 Nov 2025 10:38:24 +0100 Subject: [PATCH] fix: resolve TypeScript strict mode errors in service.ts --- src/services/service.ts | 68 +++++++++++------------------------------ 1 file changed, 18 insertions(+), 50 deletions(-) diff --git a/src/services/service.ts b/src/services/service.ts index 7b850f1..7b53a6a 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -1,11 +1,9 @@ -// @ts-nocheck - import { initWebsocket, sendMessage } from './websockets.service.ts'; import { ApiReturn, Device, HandshakeMessage, Member, MerkleProofResult, NewTxMessage, OutPointProcessMap, Process, ProcessState, RoleDefinition, SecretsStore, UserDiff } from '../../pkg/sdk_client'; import ModalService from './modal.service'; import Database from './database.service'; import { storeData, retrieveData, testData } from './storage.service'; -import { BackUp } from '~/models/4nk.model'; +import { BackUp } from '../types/index'; export const U32_MAX = 4294967295; @@ -107,7 +105,7 @@ export default class Services { if (connectedUrls.length > 0) { try { await this.waitForHandshakeMessage(); - } catch (e) { + } catch (e: any) { console.error(`[Services:connectAllRelays] ⌛️ ${e.message}`); } } @@ -418,7 +416,7 @@ export default class Services { } // --- AMÉLIORATION: Ajout de la logique "try-catch-retry" du faucet --- - public async connectAddresses(addresses: string[]): Promise { + public async connectAddresses(addresses: string[]): Promise { if (addresses.length === 0) { console.warn("[Services:connectAddresses] Appel avec une liste d'adresses vide."); return null; @@ -555,8 +553,8 @@ export default class Services { // --- AMÉLIORATION: Déplacé ici depuis le 'router' --- // On s'assure qu'on est connecté aux membres du processus qu'on vient de créer. - console.log(`[Services:createProcess] 📞 Vérification des connexions pour le nouveau processus ${result.updated_process.process_id}`); - await this.ensureConnections(result.updated_process.current_process); + console.log(`[Services:createProcess] 📞 Vérification des connexions pour le nouveau processus ${result.updated_process!.process_id}`); + await this.ensureConnections(result.updated_process!.current_process); return result; } catch (error) { // 2. Vérifier si c'est *exactement* l'erreur de fonds @@ -572,8 +570,8 @@ export default class Services { const result = await this.attemptProcessCreation(encodedPrivateData, roles, encodedPublicData, relayAddress, feeRate, members); // --- AMÉLIORATION: Déplacé ici depuis le 'router' --- - console.log(`[Services:createProcess] 📞 Vérification des connexions pour le nouveau processus ${result.updated_process.process_id} (après retry)`); - await this.ensureConnections(result.updated_process.current_process); + console.log(`[Services:createProcess] 📞 Vérification des connexions pour le nouveau processus ${result.updated_process!.process_id} (après retry)`); + await this.ensureConnections(result.updated_process!.current_process); return result; } catch (retryError) { console.error('[Services:createProcess] 💥 Échec critique : Impossible de créer le processus, même après recharge.', retryError); @@ -590,7 +588,7 @@ export default class Services { /** * Encapsule l'appel au SDK pour le réutiliser (tentative 1 et 2). */ - private async attemptProcessCreation(encodedPrivateData, roles, encodedPublicData, relayAddress, feeRate, members): Promise { + private async attemptProcessCreation(encodedPrivateData: any, roles: any, encodedPublicData: any, relayAddress: string, feeRate: number, members: any): Promise { console.log('[Services:attemptProcessCreation] 📦 Appel de sdkClient.create_new_process...'); const result = this.sdkClient.create_new_process(encodedPrivateData, roles, encodedPublicData, relayAddress, feeRate, members); if (result.updated_process) { @@ -887,7 +885,6 @@ export default class Services { const apiReturn = this.sdkClient.parse_cipher(message, membersList, processes); console.debug('[Services:parseCipher] ✅ Message déchiffré, traitement...'); await this.handleApiReturn(apiReturn); - } catch (e) { console.error(`[Services:parseCipher] 💥 Échec critique du déchiffrement: ${e}`); } @@ -1033,7 +1030,7 @@ export default class Services { return hasValidData; } - private async handlePartialTx(partialTx): Promise { + private async handlePartialTx(partialTx: any): Promise { console.log("[Services:handlePartialTx] ✍️ Signature d'une transaction partielle..."); try { const res = this.sdkClient.sign_transaction(partialTx); @@ -1114,13 +1111,13 @@ export default class Services { } } - this._resolvePendingKeyRequests(updatedProcess.current_process); + this._resolvePendingKeyRequests(processId, updatedProcess.current_process); // Vérifier la logique métier spécifique au pairing await this.checkAndConfirmPairing(processId, updatedProcess); } - private _resolvePendingKeyRequests(process: Process) { + private _resolvePendingKeyRequests(processId: string, process: Process) { if (this.pendingKeyRequests.size === 0) { return; // Optimisation : ne rien faire si personne n'attend } @@ -1133,7 +1130,7 @@ export default class Services { } for (const [attributeName, key] of Object.entries(state.keys)) { - const requestId = `${process.process_id}_${state.state_id}_${attributeName}`; + const requestId = `${processId}_${state.state_id}_${attributeName}`; // Avons-nous une requête en attente pour CETTE clé ? if (this.pendingKeyRequests.has(requestId)) { @@ -1828,8 +1825,8 @@ export default class Services { console.groupCollapsed(`[Services:decryptAttribute] 🔑 Déchiffrement de '${attribute}' (Process: ${processId})`); try { - let hash = state.pcd_commitment[attribute]; - let key = state.keys[attribute]; + let hash: string | null | undefined = state.pcd_commitment[attribute]; + let key: string | null | undefined = state.keys[attribute]; const pairingProcessId = this.getPairingProcessId(); // 1. Garde : A-t-on au moins le hash ? @@ -1957,6 +1954,10 @@ export default class Services { // 4. Re-vérifier l'état (le hash a pu changer) const updatedProcess = await this.getProcess(processId); + if (!updatedProcess) { + return { hash: null, key: null }; + } + const updatedState = this.getStateFromId(updatedProcess, state.state_id); const updatedHash = updatedState ? updatedState.pcd_commitment[attribute] : state.pcd_commitment[attribute]; @@ -2461,38 +2462,5 @@ export default class Services { return null; } } - - public getNextStateAfterId(process: Process, stateId: string): ProcessState | null { - if (process.states.length === 0) return null; - - const index = process.states.findIndex((state) => state.state_id === stateId); - - if (index !== -1 && index < process.states.length - 1) { - return process.states[index + 1]; - } - - return null; - } - - public isPairingProcess(roles: Record): boolean { - if (Object.keys(roles).length != 1) { - return false; - } - const pairingRole = roles['pairing']; - if (pairingRole) { - // For now that's enough, we should probably test more things - return true; - } else { - return false; - } - } - - public async updateMemberPublicName(process: Process, newName: string): Promise { - const publicData = { - memberPublicName: newName, - }; - - return await this.updateProcess(process, {}, publicData, null); - } }