[bug] prevents addresses duplicates in transactions

This commit is contained in:
Sosthene 2025-09-04 04:45:03 +02:00
parent 6625771830
commit b77dbceaa9

View File

@ -294,7 +294,7 @@ export class Service {
public async checkConnections(members: Member[]): Promise<void> { public async checkConnections(members: Member[]): Promise<void> {
// Ensure the amount is available before proceeding // Ensure the amount is available before proceeding
await this.getTokensFromFaucet(); await this.getTokensFromFaucet();
let unconnectedAddresses = []; let unconnectedAddresses = new Set<string>();
const myAddress = this.getDeviceAddress(); const myAddress = this.getDeviceAddress();
for (const member of members) { for (const member of members) {
const sp_addresses = member.sp_addresses; const sp_addresses = member.sp_addresses;
@ -304,23 +304,23 @@ export class Service {
if (address === myAddress) continue; if (address === myAddress) continue;
const sharedSecret = await this.getSecretForAddress(address); const sharedSecret = await this.getSecretForAddress(address);
if (!sharedSecret) { if (!sharedSecret) {
unconnectedAddresses.push(address); unconnectedAddresses.add(address);
} }
} }
} }
if (unconnectedAddresses && unconnectedAddresses.length != 0) { if (unconnectedAddresses && unconnectedAddresses.size != 0) {
const apiResult = await this.connectAddresses(unconnectedAddresses); const apiResult = await this.connectAddresses(unconnectedAddresses);
await this.handleApiReturn(apiResult); await this.handleApiReturn(apiResult);
} }
} }
public async connectAddresses(addresses: string[]): Promise<ApiReturn> { public async connectAddresses(addresses: Set<string>): Promise<ApiReturn> {
if (addresses.length === 0) { if (addresses.size === 0) {
throw new Error('Trying to connect to empty addresses list'); throw new Error('Trying to connect to empty addresses list');
} }
try { try {
return wasm.create_transaction(addresses, 1); return wasm.create_transaction(Array.from(addresses), 1);
} catch (e) { } catch (e) {
console.error('Failed to connect member:', e); console.error('Failed to connect member:', e);
throw e; throw e;