From 00f770c3c4b5bc44141fb3d09e3bd65a4bdf6d49 Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Thu, 28 Apr 2022 10:06:36 -0700 Subject: [PATCH] getTotalUnreadForConversation: Add missing isGroup parameter --- ts/models/conversations.ts | 3 ++- ts/sql/Client.ts | 7 +++++-- ts/sql/Interface.ts | 5 ++++- ts/sql/Server.ts | 23 +++++++++++++++-------- ts/test-electron/sql/markRead_test.ts | 25 ++++++++++++++++++++----- 5 files changed, 46 insertions(+), 17 deletions(-) diff --git a/ts/models/conversations.ts b/ts/models/conversations.ts index 7b301ea4c..addca020a 100644 --- a/ts/models/conversations.ts +++ b/ts/models/conversations.ts @@ -4672,7 +4672,8 @@ export class ConversationModel extends window.Backbone await markConversationRead(this.attributes, newestUnreadAt, options); const unreadCount = await window.Signal.Data.getTotalUnreadForConversation( - this.id + this.id, + { storyId: undefined, isGroup: isGroup(this.attributes) } ); const prevUnreadCount = this.get('unreadCount'); diff --git a/ts/sql/Client.ts b/ts/sql/Client.ts index ba4ac474d..b47a520cd 100644 --- a/ts/sql/Client.ts +++ b/ts/sql/Client.ts @@ -1170,9 +1170,12 @@ async function getMessageBySender({ async function getTotalUnreadForConversation( conversationId: string, - storyId?: UUIDStringType + options: { + storyId: UUIDStringType | undefined; + isGroup: boolean; + } ) { - return channels.getTotalUnreadForConversation(conversationId, storyId); + return channels.getTotalUnreadForConversation(conversationId, options); } async function getUnreadByConversationAndMarkRead(options: { diff --git a/ts/sql/Interface.ts b/ts/sql/Interface.ts index 38f6cba9b..fbba9e6c4 100644 --- a/ts/sql/Interface.ts +++ b/ts/sql/Interface.ts @@ -384,7 +384,10 @@ export type DataInterface = { removeMessages: (ids: Array) => Promise; getTotalUnreadForConversation: ( conversationId: string, - storyId?: UUIDStringType + options: { + storyId: UUIDStringType | undefined; + isGroup: boolean; + } ) => Promise; getUnreadByConversationAndMarkRead: (options: { conversationId: string; diff --git a/ts/sql/Server.ts b/ts/sql/Server.ts index 22ba8ff81..c5b276240 100644 --- a/ts/sql/Server.ts +++ b/ts/sql/Server.ts @@ -2676,14 +2676,22 @@ function getOldestUnreadMessageForConversation( async function getTotalUnreadForConversation( conversationId: string, - storyId?: UUIDStringType + options: { + storyId: UUIDStringType | undefined; + isGroup: boolean; + } ): Promise { - return getTotalUnreadForConversationSync(conversationId, storyId); + return getTotalUnreadForConversationSync(conversationId, options); } function getTotalUnreadForConversationSync( conversationId: string, - storyId?: UUIDStringType, - isGroup?: boolean + { + storyId, + isGroup, + }: { + storyId: UUIDStringType | undefined; + isGroup: boolean; + } ): number { const db = getInstance(); const row = db @@ -2737,11 +2745,10 @@ function getMessageMetricsForConversationSync( storyId, isGroup ); - const totalUnread = getTotalUnreadForConversationSync( - conversationId, + const totalUnread = getTotalUnreadForConversationSync(conversationId, { storyId, - isGroup - ); + isGroup: Boolean(isGroup), + }); return { oldest: oldest ? pick(oldest, ['received_at', 'sent_at', 'id']) : undefined, diff --git a/ts/test-electron/sql/markRead_test.ts b/ts/test-electron/sql/markRead_test.ts index f69e19b02..a96b02c54 100644 --- a/ts/test-electron/sql/markRead_test.ts +++ b/ts/test-electron/sql/markRead_test.ts @@ -124,7 +124,10 @@ describe('sql/markRead', () => { assert.lengthOf(await _getAllMessages(), 7); assert.strictEqual( - await getTotalUnreadForConversation(conversationId), + await getTotalUnreadForConversation(conversationId, { + storyId: undefined, + isGroup: false, + }), 4, 'unread count' ); @@ -137,7 +140,10 @@ describe('sql/markRead', () => { assert.lengthOf(markedRead, 2, 'two messages marked read'); assert.strictEqual( - await getTotalUnreadForConversation(conversationId), + await getTotalUnreadForConversation(conversationId, { + storyId: undefined, + isGroup: false, + }), 2, 'unread count' ); @@ -164,7 +170,10 @@ describe('sql/markRead', () => { assert.strictEqual(markedRead2[0].id, message7.id, 'should be message7'); assert.strictEqual( - await getTotalUnreadForConversation(conversationId), + await getTotalUnreadForConversation(conversationId, { + storyId: undefined, + isGroup: false, + }), 0, 'unread count' ); @@ -365,7 +374,10 @@ describe('sql/markRead', () => { }); assert.strictEqual( - await getTotalUnreadForConversation(conversationId), + await getTotalUnreadForConversation(conversationId, { + storyId: undefined, + isGroup: false, + }), 2, 'unread count' ); @@ -384,7 +396,10 @@ describe('sql/markRead', () => { 'first should be message4' ); assert.strictEqual( - await getTotalUnreadForConversation(conversationId), + await getTotalUnreadForConversation(conversationId, { + storyId: undefined, + isGroup: false, + }), 1, 'unread count' );