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 49954659aa..d6ecdf6f41 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 @@ -27,14 +27,13 @@ class MyStoriesRepository(context: Context) { fun refresh() { val storiesMap = mutableMapOf>() SignalDatabase.mms.getAllOutgoingStories(true, -1).use { - while (it.next != null) { - val messageRecord = it.current + for (messageRecord in it) { val currentList = storiesMap[messageRecord.recipient] ?: emptyList() storiesMap[messageRecord.recipient] = (currentList + messageRecord) } } - emitter.onNext(storiesMap.map { (r, m) -> createDistributionSet(r, m) }) + emitter.onNext(storiesMap.toSortedMap(MyStoryBiasComparator()).map { (r, m) -> createDistributionSet(r, m) }) } val observer = DatabaseObserver.Observer { @@ -58,4 +57,18 @@ class MyStoriesRepository(context: Context) { } ) } + + /** + * Biases "My Story" to the top of the list. + */ + class MyStoryBiasComparator : Comparator { + override fun compare(o1: Recipient, o2: Recipient): Int { + return when { + o1 == o2 -> 0 + o1.isMyStory -> -1 + o2.isMyStory -> 1 + else -> -1 + } + } + } }