handleHandshakeMsg only responsible for saving public info of processes

This commit is contained in:
NicolasCantu 2025-02-11 23:28:25 +01:00
parent 4225f41ca0
commit a380ee4f29

View File

@ -25,7 +25,6 @@ export default class Services {
private pairedAddresses: string[] = []; private pairedAddresses: string[] = [];
private sdkClient: any; private sdkClient: any;
// private processes: IProcess[] | null = null; // private processes: IProcess[] | null = null;
private processes: Set = new Set();
private myProcesses: Set = new Set(); private myProcesses: Set = new Set();
private notifications: any[] | null = null; private notifications: any[] | null = null;
private subscriptions: { element: Element; event: string; eventHandler: string }[] = []; private subscriptions: { element: Element; event: string; eventHandler: string }[] = [];
@ -1190,18 +1189,15 @@ export default class Services {
// Handle the handshake message // Handle the handshake message
public async handleHandshakeMsg(url: string, parsedMsg: any) { public async handleHandshakeMsg(url: string, parsedMsg: any) {
// Get the current user
const us = this.getMemberFromDevice();
console.log("Je suis le us de la fonction handleHandshakeMsg:", us);
try { try {
const handshakeMsg: HandshakeMessage = JSON.parse(parsedMsg); const handshakeMsg: HandshakeMessage = JSON.parse(parsedMsg);
this.updateRelay(url, handshakeMsg.sp_address); this.updateRelay(url, handshakeMsg.sp_address);
const members = handshakeMsg.peers_list; const members = handshakeMsg.peers_list;
if (this.membersList && Object.keys(this.membersList).length === 0) { if (this.membersList && Object.keys(this.membersList).length === 0) {
// We start from an empty list, just copy it over
this.membersList = handshakeMsg.peers_list; this.membersList = handshakeMsg.peers_list;
} else { } else {
// console.log('Received members:'); // We are incrementing our list
// console.log(handshakeMsg.peers_list);
for (const [processId, member] of Object.entries(handshakeMsg.peers_list)) { for (const [processId, member] of Object.entries(handshakeMsg.peers_list)) {
this.membersList[processId] = member as Member; this.membersList[processId] = member as Member;
} }
@ -1211,43 +1207,15 @@ export default class Services {
const newProcesses = handshakeMsg.processes_list; const newProcesses = handshakeMsg.processes_list;
if (newProcesses && Object.keys(newProcesses).length !== 0) { if (newProcesses && Object.keys(newProcesses).length !== 0) {
for (const [processId, process] of Object.entries(newProcesses)) { for (const [processId, process] of Object.entries(newProcesses)) {
// We check if we're part of the process const existing = await this.getProcess(processId);
if (process.states.length < 2) continue; if (!existing) {
let stateIds = []; // We add it to db
let managers = new Set(); console.log(`Saving ${processId} to db`);
for (const state of process.states) { await this.saveProcessToDb(processId, process as Process);
if (state.encrypted_pcd === null) continue; } else {
const roles = state.encrypted_pcd['roles']; console.log(`${processId} already in db`);
if (!roles) {
console.error('Can\'t find roles');
continue;
}
if (this.rolesContainsUs(roles)) {
// We add this state to the list to request
stateIds.push(state.state_id);
} else {
continue;
}
// For now we just add everyone that is in the same role than us
// const sendTo = this.membersInSameRoleThanUs(roles);
for (const [_, role] of Object.entries(roles)) {
if (!role.members.includes(us)) continue;
for (const member of role.members) {
if (member !== us) {
managers.push(member);
}
}
}
}
try {
this.sdkClient.request_data(processId, stateIds, managers);
} catch (e) {
console.error(e);
} }
} }
await this.updateProcessesFromRelay(newProcesses);
} }
}, 500) }, 500)
} catch (e) { } catch (e) {