From 8d0e6a91b54ad262b84171c372223cae3bb28041 Mon Sep 17 00:00:00 2001 From: gabriel20xx Date: Fri, 31 Oct 2025 22:17:03 +0100 Subject: [PATCH] feat: centralize field type mapping to improve code maintainability and readability --- .../app/ui/screens/ListDetailScreen.kt | 86 +++++++------------ 1 file changed, 32 insertions(+), 54 deletions(-) diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt index 58fcdcf..4b11907 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailScreen.kt @@ -711,6 +711,36 @@ private fun getDisplayTextForMeasure(field: Field, raw: String?): String { } } +// Centralized mapping from canonical/legacy field type strings to user-facing labels +private fun fieldTypeToLabel(type: String): String { + return when (type.uppercase()) { + "TEXT", "STRING" -> "Text" + "MULTILINE_TEXT" -> "Multi-line Text" + "NUMBER" -> "Number" + "CURRENCY", "PRICE" -> "Currency" + "PERCENTAGE" -> "Percentage" + "DROPDOWN" -> "Dropdown" + "AUTOCOMPLETE" -> "Autocomplete" + "CHECKBOX" -> "Checkbox" + "SWITCH" -> "Switch" + "URL" -> "URL" + "EMAIL" -> "Email" + "PHONE" -> "Phone" + "DATE" -> "Date" + "TIME" -> "Time" + "DATETIME" -> "Date & Time" + "DURATION" -> "Duration" + "IMAGE" -> "Image" + "FILE" -> "File" + "BARCODE" -> "Barcode" + "SIGNATURE" -> "Signature" + "RATING" -> "Rating" + "COLOR" -> "Color" + "LOCATION" -> "Location" + else -> "Text" + } +} + @OptIn(ExperimentalFoundationApi::class) @Composable fun FieldHeader( @@ -1337,33 +1367,7 @@ fun AddFieldDialog( onExpandedChange = { expanded = !expanded }, ) { OutlinedTextField( - value = - when (selectedFieldType) { - "TEXT" -> "Text" - "MULTILINE_TEXT" -> "Multi-line Text" - "NUMBER" -> "Number" - "CURRENCY" -> "Currency" - "PERCENTAGE" -> "Percentage" - "DROPDOWN" -> "Dropdown" - "AUTOCOMPLETE" -> "Autocomplete" - "CHECKBOX" -> "Checkbox" - "SWITCH" -> "Switch" - "URL" -> "URL" - "EMAIL" -> "Email" - "PHONE" -> "Phone" - "DATE" -> "Date" - "TIME" -> "Time" - "DATETIME" -> "Date & Time" - "DURATION" -> "Duration" - "IMAGE" -> "Image" - "FILE" -> "File" - "BARCODE" -> "Barcode" - "SIGNATURE" -> "Signature" - "RATING" -> "Rating" - "COLOR" -> "Color" - "LOCATION" -> "Location" - else -> "Text" - }, + value = fieldTypeToLabel(selectedFieldType), onValueChange = {}, readOnly = true, label = { Text("Field Type") }, @@ -1679,33 +1683,7 @@ fun EditFieldDialog( onExpandedChange = { expanded = !expanded }, ) { OutlinedTextField( - value = - when (selectedFieldType) { - "TEXT", "STRING" -> "Text" - "MULTILINE_TEXT" -> "Multi-line Text" - "NUMBER" -> "Number" - "CURRENCY", "PRICE" -> "Currency" - "PERCENTAGE" -> "Percentage" - "DROPDOWN" -> "Dropdown" - "AUTOCOMPLETE" -> "Autocomplete" - "CHECKBOX" -> "Checkbox" - "SWITCH" -> "Switch" - "URL" -> "URL" - "EMAIL" -> "Email" - "PHONE" -> "Phone" - "DATE" -> "Date" - "TIME" -> "Time" - "DATETIME" -> "Date & Time" - "DURATION" -> "Duration" - "IMAGE" -> "Image" - "FILE" -> "File" - "BARCODE" -> "Barcode" - "SIGNATURE" -> "Signature" - "RATING" -> "Rating" - "COLOR" -> "Color" - "LOCATION" -> "Location" - else -> "Text" - }, + value = fieldTypeToLabel(selectedFieldType), onValueChange = {}, readOnly = true, label = { Text("Field Type") },