do not sync blocked closed group as mobile is not ready yet

pull/1277/head
Audric Ackermann 5 years ago
parent d2a4757061
commit 3e23039adb
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -464,18 +464,15 @@ MessageSender.prototype = {
const conversations = Array.isArray(convos) ? convos : [convos]; const conversations = Array.isArray(convos) ? convos : [convos];
const { const blockedConvos = await libsession.Utils.SyncMessageUtils.filterBlockedNumbers(
blockedNumbersConvos,
blockedGroupsConvos,
} = await libsession.Utils.SyncMessageUtils.filterBlockedNumbers(
conversations conversations
); );
// currently we only sync user blocked, not groups
const blockedSyncMessage = new libsession.Messages.Outgoing.BlockedListSyncMessage( const blockedSyncMessage = new libsession.Messages.Outgoing.BlockedListSyncMessage(
{ {
timestamp: Date.now(), timestamp: Date.now(),
numbers: blockedNumbersConvos.map(n => n.id), numbers: blockedConvos.map(n => n.id),
groups: blockedGroupsConvos.map(g => g.id), groups: [],
} }
); );
return libsession.getMessageQueue().sendSyncMessage(blockedSyncMessage); return libsession.getMessageQueue().sendSyncMessage(blockedSyncMessage);

@ -177,13 +177,8 @@ async function handleBlocked(
) { ) {
window.log.info('Setting these numbers as blocked:', blocked.numbers); window.log.info('Setting these numbers as blocked:', blocked.numbers);
async function fetchAndRefreshConversation(n: string) {
const conv = await window.ConversationController.get(n);
if (conv) {
conv.trigger('change', conv);
}
}
// blocked.numbers contains numbers
if (blocked.numbers) { if (blocked.numbers) {
const currentlyBlockedNumbers = BlockedNumberController.getBlockedNumbers(); const currentlyBlockedNumbers = BlockedNumberController.getBlockedNumbers();
const toRemoveFromBlocked = _.difference( const toRemoveFromBlocked = _.difference(
@ -195,43 +190,26 @@ async function handleBlocked(
currentlyBlockedNumbers currentlyBlockedNumbers
); );
await Promise.all( async function markConvoBlocked(block: boolean, n: string) {
toAddToBlocked.map(async n => { const conv = await window.ConversationController.get(n);
await BlockedNumberController.block(n); if (conv) {
await fetchAndRefreshConversation(n); if (conv.isPrivate()) {
}) await BlockedNumberController.setBlocked(n, block);
); } else {
await Promise.all( window.console.warn('Ignoring block/unblock for group:', n);
toRemoveFromBlocked.map(async n => { }
await BlockedNumberController.unblock(n); conv.trigger('change', conv);
await fetchAndRefreshConversation(n); } else {
}) window.console.warn('Did not find corresponding conversation to block', n);
); }
} }
if (blocked.groupIds) {
const groupIds = _.map(blocked.groupIds, (groupId: any) =>
StringUtils.decode(groupId, 'utf8')
);
window.log.info(
'Setting these groups as blocked:',
groupIds.map((groupId: any) => `group(${groupId})`)
);
const currentlyBlockedGroups = BlockedNumberController.getBlockedGroups();
const toRemoveFromBlocked = _.difference(currentlyBlockedGroups, groupIds);
const toAddToBlocked = _.difference(groupIds, currentlyBlockedGroups);
await Promise.all( await Promise.all(
toAddToBlocked.map(async n => { toAddToBlocked.map(async n => markConvoBlocked(true, n))
await BlockedNumberController.blockGroup(n);
await fetchAndRefreshConversation(n);
})
); );
await Promise.all( await Promise.all(
toRemoveFromBlocked.map(async n => { toRemoveFromBlocked.map(async n => markConvoBlocked(false, n))
await BlockedNumberController.unblockGroup(n);
await fetchAndRefreshConversation(n);
})
); );
} }

@ -32,9 +32,10 @@ export abstract class BlockedListSyncMessage extends SyncMessage {
protected syncProto(): SignalService.SyncMessage { protected syncProto(): SignalService.SyncMessage {
const syncMessage = super.syncProto(); const syncMessage = super.syncProto();
// currently we do not handle the closed group blocked
syncMessage.blocked = new SignalService.SyncMessage.Blocked({ syncMessage.blocked = new SignalService.SyncMessage.Blocked({
groupIds: this.groups,
numbers: this.numbers, numbers: this.numbers,
groupIds: this.groups,
}); });
return syncMessage; return syncMessage;

@ -103,18 +103,12 @@ export async function filterBlockedNumbers(
const thisDevice = await UserUtil.getCurrentDevicePubKey(); const thisDevice = await UserUtil.getCurrentDevicePubKey();
if (!thisDevice) { if (!thisDevice) {
return { blockedNumbers: [], blockedGroupsIds: [] }; return [];
} }
const blockedNumbersConvos = conversations.filter( return conversations.filter(
c => c.isPrivate() && c.isBlocked() c => c.isBlocked() && c.isPrivate()
);
const blockedGroupsConvos = conversations.filter(
c => c.isClosedGroup() && c.isBlocked()
); );
return { blockedNumbersConvos, blockedGroupsConvos };
} }
// Serialise as <Element0.length><Element0><Element1.length><Element1>... // Serialise as <Element0.length><Element0><Element1.length><Element1>...

Loading…
Cancel
Save