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 sdkClient: any;
// private processes: IProcess[] | null = null;
private processes: Set = new Set();
private myProcesses: Set = new Set();
private notifications: any[] | null = null;
private subscriptions: { element: Element; event: string; eventHandler: string }[] = [];
@ -1190,18 +1189,15 @@ export default class Services {
// Handle the handshake message
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 {
const handshakeMsg: HandshakeMessage = JSON.parse(parsedMsg);
this.updateRelay(url, handshakeMsg.sp_address);
const members = handshakeMsg.peers_list;
if (this.membersList && Object.keys(this.membersList).length === 0) {
// We start from an empty list, just copy it over
this.membersList = handshakeMsg.peers_list;
} else {
// console.log('Received members:');
// console.log(handshakeMsg.peers_list);
// We are incrementing our list
for (const [processId, member] of Object.entries(handshakeMsg.peers_list)) {
this.membersList[processId] = member as Member;
}
@ -1211,44 +1207,16 @@ export default class Services {
const newProcesses = handshakeMsg.processes_list;
if (newProcesses && Object.keys(newProcesses).length !== 0) {
for (const [processId, process] of Object.entries(newProcesses)) {
// We check if we're part of the process
if (process.states.length < 2) continue;
let stateIds = [];
let managers = new Set();
for (const state of process.states) {
if (state.encrypted_pcd === null) continue;
const roles = state.encrypted_pcd['roles'];
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);
const existing = await this.getProcess(processId);
if (!existing) {
// We add it to db
console.log(`Saving ${processId} to db`);
await this.saveProcessToDb(processId, process as Process);
} 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);
console.log(`${processId} already in db`);
}
}
}
}
try {
this.sdkClient.request_data(processId, stateIds, managers);
} catch (e) {
console.error(e);
}
}
await this.updateProcessesFromRelay(newProcesses);
}
}, 500)
} catch (e) {
console.error('Failed to parse init message:', e);