From f03d66de386c346b354a6c1d77a7e76bc5e351af Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Thu, 9 Jul 2020 16:09:30 +1000 Subject: [PATCH] use active_at to show and sync real contacts from contact list --- js/views/invite_contacts_dialog_view.js | 2 +- ts/receiver/multidevice.ts | 3 ++- ts/session/utils/SyncMessage.ts | 6 ++++-- ts/state/selectors/conversations.ts | 6 +----- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/js/views/invite_contacts_dialog_view.js b/js/views/invite_contacts_dialog_view.js index 5d5c4172b..0ba2486a5 100644 --- a/js/views/invite_contacts_dialog_view.js +++ b/js/views/invite_contacts_dialog_view.js @@ -20,7 +20,7 @@ !d.isBlocked() && d.isPrivate() && !d.isMe() && - !!d.attributes.timestamp + !!d.get('active_at') ); if (!convo.isPublic()) { const members = convo.get('members') || []; diff --git a/ts/receiver/multidevice.ts b/ts/receiver/multidevice.ts index 4b75cceeb..5cf786f64 100644 --- a/ts/receiver/multidevice.ts +++ b/ts/receiver/multidevice.ts @@ -334,6 +334,7 @@ async function onContactReceived(details: any) { // activeAt is null, then this contact has been purposefully hidden. if (activeAt !== null) { activeAt = activeAt || Date.now(); + conversation.set('active_at', activeAt); } const ourPrimaryKey = window.storage.get('primaryDevicePubKey'); if (ourPrimaryKey) { @@ -375,7 +376,6 @@ async function onContactReceived(details: any) { conversation.set({ // name: details.name, color: details.color, - active_at: activeAt, }); await conversation.setLokiProfile({ displayName: details.name }); @@ -427,6 +427,7 @@ async function onContactReceived(details: any) { verifiedEvent.viaContactSync = true; await onVerified(verifiedEvent); } + await conversation.trigger('change'); } catch (error) { window.log.error('onContactReceived error:', Errors.toLogFormat(error)); } diff --git a/ts/session/utils/SyncMessage.ts b/ts/session/utils/SyncMessage.ts index ffa5b8bdb..85df60a86 100644 --- a/ts/session/utils/SyncMessage.ts +++ b/ts/session/utils/SyncMessage.ts @@ -50,7 +50,8 @@ export async function getSyncContacts(): Promise | undefined> { c.isPrivate() && !c.isOurLocalDevice() && !c.isBlocked() && - !c.attributes.secondaryStatus + !c.attributes.secondaryStatus && + !!c.get('active_at') ) || []; const secondaryContactsPartial = conversations.filter( @@ -58,7 +59,8 @@ export async function getSyncContacts(): Promise | undefined> { c.isPrivate() && !c.isOurLocalDevice() && !c.isBlocked() && - c.attributes.secondaryStatus + c.attributes.secondaryStatus && + !!c.get('active_at') ); const secondaryContactsPromise = secondaryContactsPartial.map(async c => diff --git a/ts/state/selectors/conversations.ts b/ts/state/selectors/conversations.ts index 3f28c7851..786340d27 100644 --- a/ts/state/selectors/conversations.ts +++ b/ts/state/selectors/conversations.ts @@ -139,7 +139,7 @@ export const _getLeftPaneLists = ( // Remove all invalid conversations and conversatons of devices associated // with cancelled attempted links - if (!conversation.isPublic && !conversation.timestamp) { + if (!conversation.isPublic && !conversation.activeAt) { continue; } @@ -151,10 +151,6 @@ export const _getLeftPaneLists = ( unreadCount += conversation.unreadCount; } - if (!conversation.isPublic && !conversation.activeAt) { - continue; - } - if (conversation.isArchived) { archivedConversations.push(conversation); } else {