diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt index fb38ba748e..b14435d687 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt @@ -11,6 +11,7 @@ import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.conversation.ConversationMessage import org.thoughtcrime.securesms.database.DatabaseObserver +import org.thoughtcrime.securesms.database.GroupReceiptTable import org.thoughtcrime.securesms.database.NoSuchMessageException import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.MessageId @@ -77,18 +78,19 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat return Observable.create { emitter -> fun refresh(record: MessageRecord) { val recipient = Recipient.resolved(recipientId) + val viewedCount = SignalDatabase.groupReceipts.getGroupReceiptInfo(record.id).filter { it.status == GroupReceiptTable.STATUS_VIEWED }.size val story = StoryPost( id = record.id, sender = record.fromRecipient, group = if (recipient.isGroup) recipient else null, distributionList = if (record.toRecipient.isDistributionList) record.toRecipient else null, - viewCount = record.viewedReceiptCount, + viewCount = viewedCount, replyCount = SignalDatabase.messages.getNumberOfStoryReplies(record.id), dateInMilliseconds = record.dateSent, content = getContent(record as MmsMessageRecord), conversationMessage = ConversationMessage.ConversationMessageFactory.createWithUnresolvedData(context, record, recipient), allowsReplies = record.storyType.isStoryWithReplies, - hasSelfViewed = storyViewStateCache.getOrPut(record.id, if (record.isOutgoing) true else record.viewedReceiptCount > 0) + hasSelfViewed = storyViewStateCache.getOrPut(record.id, if (record.isOutgoing) true else viewedCount > 0) ) emitter.onNext(story)