kick all devices finished

pull/1109/head
Vincent 5 years ago
parent 52de32e65d
commit 9f2688561a

@ -641,73 +641,6 @@
const ev = new Event('message');
ev.confirm = () => {};
const convo = await ConversationController.getOrCreateAndWait(
groupId,
'group'
);
if (convo.isClosedGroup()) {
// when removing, remove all pubkeys associated with this
// device to avoid sync delay issues and invalid group settings
// await window.libloki.storage.getPairedDevicesFor()
const allPubkeys = members;
// for each pubkey, get its paired devices
// we want to find all current members,
// and subtract members to get members to remove
// membersToRemove = currentMembers - newMembers
// membersToAdd
// first, get members to remove.
// then for each user to remove, find its devices
// if pubkey already in devices to remove, skip
const currentMembers = convo.attributes.members;
const membersToRemove = currentMembers.filter(
member => !_.includes(members, member)
);
const allMembersToRemove = [];
membersToRemove.forEach(async member => {
const pairedDevices = await libloki.storage.getPairedDevicesFor(member);
allMembersToRemove.push(member, ...pairedDevices);
console.log('[vince] ALL DEVICES FOR THIS USER:', [member, ...pairedDevices]);
});
console.log('[vince] members:', members);
console.log('[vince] currentMembers:', currentMembers);
console.log('[vince] membersToRemove:', membersToRemove);
console.log('[vince] allMembersToRemove:', allMembersToRemove);
/// OOOOOH interesting. The member is already removed by the
// time this function is called
// For each of allMembersToRemove,
// if you exist in members,
// allPubkeys.forEach(pubkey => {
// });
// const pairedDevices = 5;
// console.log('[vince] this.members:', this.get('members'));
// console.log('[vince] providedGroupUpdate:', providedGroupUpdate);
// console.log('[vince] groupUpdate:', groupUpdate);
console.log('[vince] doUpdateGroup: members:', members);
// rturn early for testing
alert('return early for testing');
return;
}
ev.data = {
source: ourKey,
timestamp: Date.now(),
@ -722,6 +655,11 @@
},
};
const convo = await ConversationController.getOrCreateAndWait(
groupId,
'group'
);
if (convo.isPublic()) {
const API = await convo.getPublicSendData();

@ -192,21 +192,24 @@
m => !allMembers.includes(m)
);
// Filter out all linked devices for cases in which one device
// exists in group, but hasn't yet synced with its other devices.
const getDevicesForRemoved = async () => {
const promises = notPresentInNew.map(member => libloki.storage.getPairedDevicesFor(member));
const promises = notPresentInNew.map(member =>
libloki.storage.getPairedDevicesFor(member)
);
const devices = window.Lodash.flatten(await Promise.all(promises));
return devices;
}
};
// Get all devices for notPresentInNew
const allDevicesOfMembersToRemove = await getDevicesForRemoved();
// If any extra devices of removed exist in newMembers, ensure that you filter them
const filteredMemberes = allMembers.filter(member => !(window.Lodash.includes(allDevicesOfMembersToRemove, member)));
const filteredMemberes = allMembers.filter(
member => !window.Lodash.includes(allDevicesOfMembersToRemove, member)
);
// Would be easer with _.xor but for some reason we do not have it
const xor = notPresentInNew.concat(notPresentInOld);
@ -218,24 +221,12 @@
return;
}
console.log('[vince] allDevicesOfMembersToRemove:', allDevicesOfMembersToRemove);
console.log('[vince] allMembers:', allMembers);
console.log('[vince] notPresentInOld:', notPresentInOld);
console.log('[vince] notPresentInNew:', notPresentInNew);
console.log('[vince] xor:', xor);
console.log('[vince] filteredMemberes:', filteredMemberes);
alert('returning earlyyyy');
// window.doUpdateGroup(
// this.groupId,
// this.groupName,
// filteredMemberes,
// this.avatarPath
// );
window.doUpdateGroup(
this.groupId,
this.groupName,
filteredMemberes,
this.avatarPath
);
},
close() {
this.remove();

Loading…
Cancel
Save