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() + } } }