From e9fb3b021e220d407ee9f90b1d30e8aa48bd511d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pelgr=C3=B6m?= Date: Wed, 15 Jan 2025 17:28:45 +0100 Subject: [PATCH] Avoid duplicate LazyColumn SSID keys (#4976) * Avoid duplicate LazyColumn SSID keys * Don't allow adding the same SSID twice --- .../companion/android/settings/ssid/SsidViewModel.kt | 1 + .../companion/android/settings/ssid/views/SsidView.kt | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/ssid/SsidViewModel.kt b/app/src/main/java/io/homeassistant/companion/android/settings/ssid/SsidViewModel.kt index 48a9cb4945a..1174a818a5d 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/ssid/SsidViewModel.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/ssid/SsidViewModel.kt @@ -71,6 +71,7 @@ class SsidViewModel @Inject constructor( */ fun addHomeWifiSsid(ssid: String): Boolean { if (ssid.isEmpty()) return false + if (wifiSsids.contains(ssid)) return false setHomeWifiSsids((wifiSsids + ssid).sorted()) return true } diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/ssid/views/SsidView.kt b/app/src/main/java/io/homeassistant/companion/android/settings/ssid/views/SsidView.kt index 757bc7cea31..29b3fa09812 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/ssid/views/SsidView.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/ssid/views/SsidView.kt @@ -15,7 +15,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.Button @@ -131,7 +131,12 @@ fun SsidView( } } } - items(wifiSsids, key = { "ssid.item.$it" }) { + itemsIndexed( + items = wifiSsids, + key = { index: Int, item: String -> + if (wifiSsids.count { it == item } == 1) "ssid.item.$item" else "ssid.index.$index" + } + ) { _, it -> val connected = remember(it, activeSsid, activeBssid, usingWifi) { usingWifi && (