import 'package:pshared/models/money.dart'; import 'package:pshared/utils/currency.dart'; double parseMoneyAmount(String? raw, {double fallback = 0}) { final trimmed = raw?.trim(); if (trimmed == null || trimmed.isEmpty) return fallback; return double.tryParse(trimmed) ?? fallback; } String formatMoneyDisplay( Money? money, { String fallback = '--', String separator = ' ', String invalidAmountFallback = '', }) { if (money == null) return fallback; final rawAmount = money.amount.trim(); final rawCurrency = money.currency.trim(); final parsedAmount = parseMoneyAmount(rawAmount, fallback: double.nan); final amountToken = parsedAmount.isNaN ? (rawAmount.isEmpty ? invalidAmountFallback : rawAmount) : amountToString(parsedAmount); final symbol = currencySymbolFromCode(rawCurrency); final normalizedSymbol = symbol?.trim() ?? ''; final hasSymbol = normalizedSymbol.isNotEmpty; final currencyToken = hasSymbol ? normalizedSymbol : rawCurrency; final first = amountToken; final second = currencyToken; if (first.isEmpty && second.isEmpty) return fallback; if (first.isEmpty) return second; if (second.isEmpty) return first; return '$first$separator$second'; } extension MoneyAmountX on Money { double get amountValue => parseMoneyAmount(amount); }