From eff07bfb1e85b79d9d40f49e866eed24e8853bd0 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 30 Mar 2023 11:02:39 -0400 Subject: [PATCH] Breaks notification cards in chunks of 50 notifications each. --- .../amethyst/ui/screen/CardFeedViewModel.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt index 2e1956d1b..1b546d246 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt @@ -100,14 +100,21 @@ open class CardFeedViewModel(val dataSource: FeedFilter) : ViewModel() { } val allBaseNotes = zapsPerEvent.keys + boostsPerEvent.keys + reactionsPerEvent.keys - val multiCards = allBaseNotes.map { - MultiSetCard( - it, - boostsPerEvent.get(it) ?: emptyList(), - reactionsPerEvent.get(it) ?: emptyList(), - zapsPerEvent.get(it) ?: emptyMap() - ) - } + val multiCards = allBaseNotes.map { baseNote -> + val boostsInCard = boostsPerEvent[baseNote] ?: emptyList() + val reactionsInCard = reactionsPerEvent[baseNote] ?: emptyList() + val zapsInCard = zapsPerEvent[baseNote] ?: emptyMap() + + val singleList = (boostsInCard + zapsInCard.values + reactionsInCard).sortedBy { it.createdAt() } + singleList.chunked(50).map { chunk -> + MultiSetCard( + baseNote, + boostsInCard.filter { it in chunk }, + reactionsInCard.filter { it in chunk }, + zapsInCard.filter { it.value in chunk } + ) + } + }.flatten() val textNoteCards = notes.filter { it.event !is ReactionEvent && it.event !is RepostEvent && it.event !is LnZapEvent }.map { if (it.event is PrivateDmEvent) {