Utilize receipts instead of messagerecord count for views.

This commit is contained in:
Alex Hart
2023-05-16 15:39:55 -03:00
committed by Greyson Parrelli
parent 58e48fdf14
commit 8df0248d4f
4 changed files with 21 additions and 10 deletions

View File

@@ -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)
}

View File

@@ -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)

View File

@@ -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<MessageRecord>): 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 }
)
}
)
}

View File

@@ -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<DistributionSet> = emptyList()
@@ -8,6 +9,13 @@ data class MyStoriesState(
data class DistributionSet(
val label: String?,
val stories: List<ConversationMessage>
val stories: List<DistributionStory>
)
data class DistributionStory(
val message: ConversationMessage,
val views: Int
) {
val messageRecord: MessageRecord = message.messageRecord
}
}