From 18554170f2ba7c2d206754e1a8284deef08a6797 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 15 Mar 2023 13:27:50 -0300 Subject: [PATCH] Update call tab to display unread missed call count. --- .../securesms/database/MessageTable.kt | 14 ++++++++++++++ .../stories/tabs/ConversationListTabRepository.kt | 14 +++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 53908a0dbb..7fee8921a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -1324,6 +1324,20 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat return MmsReader(rawQueryWithAttachments(query, args, false, limit.toLong())) } + fun getUnreadMisedCallCount(): Long { + return readableDatabase + .select("COUNT(*)") + .from(TABLE_NAME) + .where( + "($TYPE = ? OR $TYPE = ?) AND $READ = ?", + MessageTypes.MISSED_AUDIO_CALL_TYPE, + MessageTypes.MISSED_VIDEO_CALL_TYPE, + 0 + ) + .run() + .readToSingleLong(0L) + } + fun getParentStoryIdForGroupReply(messageId: Long): GroupReply? { return readableDatabase .select(PARENT_STORY_ID) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabRepository.kt index 3e00821787..ede1109853 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabRepository.kt @@ -48,6 +48,18 @@ class ConversationListTabRepository { } fun getNumberOfUnseenCalls(): Observable { - return Observable.just(99) + return Observable.create { emitter -> + fun refresh() { + emitter.onNext(SignalDatabase.messages.getUnreadMisedCallCount()) + } + + val listener = DatabaseObserver.Observer { + refresh() + } + + ApplicationDependencies.getDatabaseObserver().registerConversationListObserver(listener) + emitter.setCancellable { ApplicationDependencies.getDatabaseObserver().unregisterObserver(listener) } + refresh() + } } }