From 2897058697a61ee18f8cc9c064e7ec440da0fd24 Mon Sep 17 00:00:00 2001 From: andrekir Date: Sun, 29 Sep 2024 19:32:09 -0300 Subject: [PATCH] feat: remove deprecated protobufs from `DropDownPreference` --- .../mesh/ui/components/DropDownPreference.kt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/components/DropDownPreference.kt b/app/src/main/java/com/geeksville/mesh/ui/components/DropDownPreference.kt index 76f7bef17..7dcb991f3 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/components/DropDownPreference.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/components/DropDownPreference.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview +import com.google.protobuf.ProtocolMessageEnum @Composable fun DropDownPreference( @@ -31,6 +32,20 @@ fun DropDownPreference( ) { var dropDownExpanded by remember { mutableStateOf(value = false) } + val deprecatedItems: List = remember { + if (selectedItem is ProtocolMessageEnum) { + val enum = (selectedItem as? Enum<*>)?.declaringJavaClass?.enumConstants + val descriptor = (selectedItem as ProtocolMessageEnum).descriptorForType + + @Suppress("UNCHECKED_CAST") + enum?.filter { entries -> + descriptor.values.any { it.name == entries.name && it.options.deprecated } + } as? List ?: emptyList() // Safe cast to List or return emptyList if cast fails + } else { + emptyList() + } + } + RegularPreference( title = title, subtitle = items.first { it.first == selectedItem }.second, @@ -48,7 +63,7 @@ fun DropDownPreference( expanded = dropDownExpanded, onDismissRequest = { dropDownExpanded = !dropDownExpanded }, ) { - items.forEach { item -> + items.filterNot { it.first in deprecatedItems }.forEach { item -> DropdownMenuItem( onClick = { dropDownExpanded = false