diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt index 019d674269..11ae296b78 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesFragment.kt @@ -71,10 +71,10 @@ class MyStoriesFragment : DSLSettingsFragment( DSLSettingsText.from(distributionSet.label) } ) - distributionSet.stories.forEach { conversationMessage -> + distributionSet.stories.forEach { distributionStory -> customPref( MyStoriesItem.Model( - distributionStory = conversationMessage, + distributionStory = distributionStory, onClick = { it, preview -> openStoryViewer(it, preview, false) }, @@ -85,7 +85,7 @@ class MyStoriesFragment : DSLSettingsFragment( onForwardClick = { item -> MultiselectForwardFragmentArgs.create( requireContext(), - item.distributionStory.multiselectCollection.toSet() + item.distributionStory.message.multiselectCollection.toSet() ) { MultiselectForwardFragment.showBottomSheet(childFragmentManager, it) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt index 9579ce55ce..ffa3533ba8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt @@ -14,7 +14,6 @@ import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.menu.ActionItem import org.thoughtcrime.securesms.components.menu.SignalContextMenu import org.thoughtcrime.securesms.components.settings.PreferenceModel -import org.thoughtcrime.securesms.conversation.ConversationMessage import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader @@ -37,7 +36,7 @@ object MyStoriesItem { } class Model( - val distributionStory: ConversationMessage, + val distributionStory: MyStoriesState.DistributionStory, val onClick: (Model, View) -> Unit, val onSaveClick: (Model) -> Unit, val onDeleteClick: (Model) -> Unit, @@ -118,8 +117,8 @@ object MyStoriesItem { if (SignalStore.storyValues().viewedReceiptsEnabled) { viewCount.text = context.resources.getQuantityString( R.plurals.MyStories__d_views, - model.distributionStory.messageRecord.viewedReceiptCount, - model.distributionStory.messageRecord.viewedReceiptCount + model.distributionStory.views, + model.distributionStory.views ) } else { viewCount.setText(R.string.StoryViewerPageFragment__views_off) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesRepository.kt index 249874541a..dc5ee98d7f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesRepository.kt @@ -5,6 +5,7 @@ import io.reactivex.rxjava3.core.Completable import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.schedulers.Schedulers import org.thoughtcrime.securesms.conversation.ConversationMessage +import org.thoughtcrime.securesms.database.GroupReceiptTable import org.thoughtcrime.securesms.database.RxDatabaseObserver import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.MessageRecord @@ -41,8 +42,11 @@ class MyStoriesRepository(context: Context) { private fun createDistributionSet(recipient: Recipient, messageRecords: List): MyStoriesState.DistributionSet { return MyStoriesState.DistributionSet( label = recipient.getDisplayName(context), - stories = messageRecords.map { - ConversationMessage.ConversationMessageFactory.createWithUnresolvedData(context, it, recipient) + stories = messageRecords.map { record -> + MyStoriesState.DistributionStory( + message = ConversationMessage.ConversationMessageFactory.createWithUnresolvedData(context, record, recipient), + views = SignalDatabase.groupReceipts.getGroupReceiptInfo(record.id).count { it.status == GroupReceiptTable.STATUS_VIEWED } + ) } ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesState.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesState.kt index 87bcf5ed33..85a1d1a6c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesState.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.stories.my import org.thoughtcrime.securesms.conversation.ConversationMessage +import org.thoughtcrime.securesms.database.model.MessageRecord data class MyStoriesState( val distributionSets: List = emptyList() @@ -8,6 +9,13 @@ data class MyStoriesState( data class DistributionSet( val label: String?, - val stories: List + val stories: List ) + + data class DistributionStory( + val message: ConversationMessage, + val views: Int + ) { + val messageRecord: MessageRecord = message.messageRecord + } }