diff --git a/app/src/main/java/de/dbauer/expensetracker/Extensions.kt b/app/src/main/java/de/dbauer/expensetracker/Extensions.kt index 338c30f..2a0fc54 100644 --- a/app/src/main/java/de/dbauer/expensetracker/Extensions.kt +++ b/app/src/main/java/de/dbauer/expensetracker/Extensions.kt @@ -17,9 +17,10 @@ fun Float.toLocalString(): String { } } -fun String.toFloatIgnoreSeparator(): Float { - val converted = replace(",", ".") - return converted.toFloat() +fun String.toFloatLocaleAware(): Float? { + return NumberFormat.getInstance().let { + it.parse(this)?.toFloat() + } } fun ZipInputStream.forEachEntry(block: (entry: ZipEntry) -> Unit) { diff --git a/app/src/main/java/de/dbauer/expensetracker/ui/editexpense/EditRecurringExpenseSheet.kt b/app/src/main/java/de/dbauer/expensetracker/ui/editexpense/EditRecurringExpenseSheet.kt index 434e847..abf9a2d 100644 --- a/app/src/main/java/de/dbauer/expensetracker/ui/editexpense/EditRecurringExpenseSheet.kt +++ b/app/src/main/java/de/dbauer/expensetracker/ui/editexpense/EditRecurringExpenseSheet.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.unit.dp import de.dbauer.expensetracker.R import de.dbauer.expensetracker.data.Recurrence import de.dbauer.expensetracker.data.RecurringExpenseData -import de.dbauer.expensetracker.toFloatIgnoreSeparator +import de.dbauer.expensetracker.toFloatLocaleAware import de.dbauer.expensetracker.toLocalString import de.dbauer.expensetracker.ui.customizations.ExpenseColor import de.dbauer.expensetracker.ui.theme.ExpenseTrackerTheme @@ -252,8 +252,8 @@ private fun onConfirmClicked( id = currentData?.id ?: 0, name = name, description = description, - price = price.toFloatIgnoreSeparator(), - monthlyPrice = price.toFloatIgnoreSeparator(), + price = price.toFloatLocaleAware() ?: 0f, + monthlyPrice = price.toFloatLocaleAware() ?: 0f, everyXRecurrence = everyXRecurrence.toIntOrNull() ?: 1, recurrence = selectedRecurrence, firstPayment = firstPayment, @@ -292,8 +292,7 @@ private fun isNameValid(name: String): Boolean { } private fun isPriceValid(price: String): Boolean { - val priceConverted = price.replace(",", ".") - return priceConverted.toFloatOrNull() != null + return price.toFloatLocaleAware() != null } private fun isEveryXRecurrenceValid(everyXRecurrence: String): Boolean {