From 3bb9d888dcc423f9228bae9a789575641ec0a337 Mon Sep 17 00:00:00 2001 From: Beaudan Date: Fri, 14 Jun 2019 17:30:43 +1000 Subject: [PATCH 1/3] Initialise conversation with ourselves as friends and don't allow it to be changed to anything else --- js/models/conversations.js | 2 ++ libtextsecure/account_manager.js | 1 + 2 files changed, 3 insertions(+) diff --git a/js/models/conversations.js b/js/models/conversations.js index 6ff015d25..1afc25e10 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -642,6 +642,8 @@ async setFriendRequestStatus(newStatus) { // Ensure that the new status is a valid FriendStatusEnum value if (!(newStatus in Object.values(FriendRequestStatusEnum))) return; + const me = textsecure.storage.user.getNumber(); + if (me === this.id && newStatus !== FriendRequestStatusEnum.friends) return; if (this.get('friendRequestStatus') !== newStatus) { this.set({ friendRequestStatus: newStatus }); await window.Signal.Data.updateConversation(this.id, this.attributes, { diff --git a/libtextsecure/account_manager.js b/libtextsecure/account_manager.js index e09aaf05d..80143a443 100644 --- a/libtextsecure/account_manager.js +++ b/libtextsecure/account_manager.js @@ -537,6 +537,7 @@ // Update the conversation if we have it const newProfile = storage.getLocalProfile(); await conversation.setProfile(newProfile); + await conversation.setFriendRequestStatus(window.friends.friendRequestStatusEnum.friends); this.dispatchEvent(new Event('registration')); }, From ab15a4afd6f82764d8c339e39347ab2219dfa0a4 Mon Sep 17 00:00:00 2001 From: Beaudan Date: Mon, 17 Jun 2019 11:56:54 +1000 Subject: [PATCH 2/3] Review moving status setting to conversation init --- js/models/conversations.js | 11 +++++++++-- libtextsecure/account_manager.js | 1 - 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index 1afc25e10..a5d16afad 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -167,6 +167,9 @@ // Online status handling this.set({ isOnline: lokiP2pAPI.isOnline(this.id) }); + if (this.id === this.ourNumber) { + this.setFriendRequestStatus(FriendRequestStatusEnum.friends); + } this.messageSendQueue = new JobQueue(); @@ -642,8 +645,12 @@ async setFriendRequestStatus(newStatus) { // Ensure that the new status is a valid FriendStatusEnum value if (!(newStatus in Object.values(FriendRequestStatusEnum))) return; - const me = textsecure.storage.user.getNumber(); - if (me === this.id && newStatus !== FriendRequestStatusEnum.friends) return; + if ( + this.ourNumber === this.id && + newStatus !== FriendRequestStatusEnum.friends + ) { + return; + } if (this.get('friendRequestStatus') !== newStatus) { this.set({ friendRequestStatus: newStatus }); await window.Signal.Data.updateConversation(this.id, this.attributes, { diff --git a/libtextsecure/account_manager.js b/libtextsecure/account_manager.js index 80143a443..e09aaf05d 100644 --- a/libtextsecure/account_manager.js +++ b/libtextsecure/account_manager.js @@ -537,7 +537,6 @@ // Update the conversation if we have it const newProfile = storage.getLocalProfile(); await conversation.setProfile(newProfile); - await conversation.setFriendRequestStatus(window.friends.friendRequestStatusEnum.friends); this.dispatchEvent(new Event('registration')); }, From e1d24847977d43a235372911bca06b56b5de71a7 Mon Sep 17 00:00:00 2001 From: Beaudan Date: Mon, 17 Jun 2019 12:49:35 +1000 Subject: [PATCH 3/3] Can't update conversation that hasn't been created yet --- js/models/conversations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index a5d16afad..a31c35fc3 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -168,7 +168,7 @@ // Online status handling this.set({ isOnline: lokiP2pAPI.isOnline(this.id) }); if (this.id === this.ourNumber) { - this.setFriendRequestStatus(FriendRequestStatusEnum.friends); + this.set({ friendRequestStatus: FriendRequestStatusEnum.friends }); } this.messageSendQueue = new JobQueue();