From 872145c0321ae7c7489c65f242747503d9bd1b26 Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Mon, 11 Aug 2025 18:29:33 +0300 Subject: [PATCH] Handle missing ad slot anchors safely --- .../dashboard/ui/ScannerDashboardScreen.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/d4rk/cleaner/app/clean/dashboard/ui/ScannerDashboardScreen.kt b/app/src/main/kotlin/com/d4rk/cleaner/app/clean/dashboard/ui/ScannerDashboardScreen.kt index 6c9a4ec0..b7357133 100644 --- a/app/src/main/kotlin/com/d4rk/cleaner/app/clean/dashboard/ui/ScannerDashboardScreen.kt +++ b/app/src/main/kotlin/com/d4rk/cleaner/app/clean/dashboard/ui/ScannerDashboardScreen.kt @@ -206,16 +206,28 @@ fun ScannerDashboardScreen( AdSlot.F to 11 ) - val adQueue = allowedSlots.sortedBy { slotAnchors[it]!! }.toMutableList() + val adQueue = allowedSlots + .filter { slotAnchors[it] != null } + .sortedBy { slotAnchors.getValue(it) } + .toMutableList() val items = mutableListOf() var lastWasAd = false for ((index, card) in content) { items.add(HomeItem.Card(card)) lastWasAd = false - while (adQueue.isNotEmpty() && slotAnchors[adQueue.first()]!! <= index) { - if (!lastWasAd) { - items.add(HomeItem.Ad(adQueue.removeAt(0))) - lastWasAd = true + while (adQueue.isNotEmpty()) { + val slot = adQueue.first() + val anchor = slotAnchors[slot] ?: run { + adQueue.removeAt(0) + continue + } + if (anchor <= index) { + if (!lastWasAd) { + items.add(HomeItem.Ad(adQueue.removeAt(0))) + lastWasAd = true + } else { + break + } } else { break }