fix: resolve TypeScript strict mode errors in service.ts

This commit is contained in:
NicolasCantu 2025-11-25 10:38:24 +01:00
parent 225dd27c2c
commit d072eb0831

View File

@ -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<ApiReturn> {
public async connectAddresses(addresses: string[]): Promise<ApiReturn | null> {
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<ApiReturn> {
private async attemptProcessCreation(encodedPrivateData: any, roles: any, encodedPublicData: any, relayAddress: string, feeRate: number, members: any): Promise<ApiReturn> {
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<any> {
private async handlePartialTx(partialTx: any): Promise<any> {
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<string, RoleDefinition>): 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<ApiReturn> {
const publicData = {
memberPublicName: newName,
};
return await this.updateProcess(process, {}, publicData, null);
}
}