From a75d2cfa34c4f063cedda39b1db917b73b9bfc0a Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 5 Apr 2022 16:58:12 -0300 Subject: [PATCH] Adjust viewer ordering to match landing page. --- .../stories/viewer/StoryViewerRepository.kt | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt index 34577fbc0..0db6acc2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt @@ -1,10 +1,8 @@ package org.thoughtcrime.securesms.stories.viewer import io.reactivex.rxjava3.core.Single -import io.reactivex.rxjava3.schedulers.Schedulers import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.DistributionListId -import org.thoughtcrime.securesms.database.model.StoryResult import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId @@ -13,32 +11,25 @@ import org.thoughtcrime.securesms.recipients.RecipientId */ open class StoryViewerRepository { fun getStories(): Single> { - return Single.fromCallable { - val storyResults: List = SignalDatabase.mms.orderedStoryRecipientsAndIds.distinctBy { it.recipientId } - val resolved = storyResults.map { Recipient.resolved(it.recipientId) } - - val doNotCollapse: List = resolved - .filterNot { it.isDistributionList || it.shouldHideStory() } - .map { it.id } - - val myStory: RecipientId = SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.MY_STORY) - - val myStoriesCount = SignalDatabase.mms.getAllOutgoingStories(true).use { - var count = 0 - while (it.next != null) { - if (!it.current.recipient.isGroup) { - count++ - } + return Single.create { emitter -> + val myStoriesId = SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.MY_STORY) + val myStories = Recipient.resolved(myStoriesId) + val recipientIds = SignalDatabase.mms.orderedStoryRecipientsAndIds.groupBy { + val recipient = Recipient.resolved(it.recipientId) + if (recipient.isDistributionList) { + myStories + } else { + recipient } + }.keys.filterNot { it.shouldHideStory() }.map { it.id } - count - } - - if (myStoriesCount > 0) { - listOf(myStory) + doNotCollapse - } else { - doNotCollapse - } - }.subscribeOn(Schedulers.io()) + emitter.onSuccess( + if (recipientIds.contains(myStoriesId)) { + listOf(myStoriesId) + (recipientIds - myStoriesId) + } else { + recipientIds + } + ) + } } }