Skip to content

Commit

Permalink
Merge pull request #530 from lyskouski/CR-529
Browse files Browse the repository at this point in the history
[#529] [CR] Floating point limitation in the currency exchange
  • Loading branch information
lyskouski authored Dec 10, 2024
2 parents a2a8fe4 + 35a64f8 commit e7ace4f
Show file tree
Hide file tree
Showing 23 changed files with 83 additions and 3 deletions.
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_ar.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_يمكن الاطلاع على القائمة الكاملة للتحديثات من خلال عنصر التنقل "حول" الموجود على زر "تلميحات"._

### 6.0.1
- السماح بتبديل العملات الأقل من الكسور العشرية

### 6.0.0
- إضافة الشاشة / القطعة الرئيسية للأندرويد
- تحسين الميزانيات النسبية
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_az.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Yeniləmələrin tam siyahısına "İpucu" düyməsindəki "Haqqında" naviqasiya elementi vasitəsilə baxmaq olar._

### 6.0.1
- Onluq fraksiyalardan aşağı olan valyutalar üçün mübadilələrə icazə verilir

### 6.0.0
- Android üçün ekran / ev vidjetinin əlavə edilməsi
- Nisbi büdcələrin təkmilləşdirilməsi
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_be.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Поўны спіс абнаўленьняў можна праглядзець у навігацыйным пункце «Аб дадатку» на кнопцы «Падказкі»._

### 6.0.1
- Дазваленьне абмену на валюты ніжэй дзесятковых дробаў

### 6.0.0
- Даданьне віджэта экрана / дома для Android
- Паляпшэньне адносных бюджэтаў
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_be_EU.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Poŭny spis abnaŭlieńniaŭ možna prahliadzieć u navihacyjnym punkcie «Ab Dadatku» na knopcy «Padkazki»._

### 6.0.1
- Dazvalieńnie abmienu na valiuty nižej dziesiatkovych drobaŭ

### 6.0.0
- Dadańnie vidžeta ekrana / doma dlia Android
- Paliapšeńnie adnosnych biudžetaŭ
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_de.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Die vollständige Liste der Updates kann über den Navigationspunkt "Über" auf der Schaltfläche "Hinweise" eingesehen werden._

### 6.0.1
- Erlaubt den Umtausch von Währungen unterhalb von Dezimalbrüchen

### 6.0.0
- Hinzufügen von Bildschirm-/Home-Widgets für Android
- Verbesserung der relativen Budgets
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_The full list of updates can be viewed via the "About" navigation item on the "Hints" button._

### 6.0.1
- Allowing exchanges for currencies below decimal fractions

### 6.0.0
- Adding screen / home widget for Android
- Improving relative budgets
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_es.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_La lista completa de actualizaciones puede consultarse en el menú "Acerca de" del botón "Sugerencias"._

### 6.0.1
- Permitir cambios de divisas por debajo de fracciones decimales

### 6.0.0
- Adición de pantalla / widget de inicio para Android
- Mejora de los presupuestos relativos
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_fa.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_لیست کامل به روز رسانی ها را می توان از طریق آیتم پیمایش "درباره" در دکمه "نکات" مشاهده کرد._

### 6.0.1
- امکان مبادله برای ارزهای زیر کسری اعشاری

### 6.0.0
- اضافه کردن ویجت صفحه / صفحه اصلی برای اندروید
- بهبود بودجه های نسبی
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_La liste complète des mises à jour peut être consultée via l'élément de navigation "À propos" du bouton "Conseils"._

### 6.0.1
- Permettre les échanges pour les monnaies en dessous des fractions décimales

### 6.0.0
- Ajout d'un widget écran / maison pour Android
- Amélioration des budgets relatifs
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_hi.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_अपडेट की पूरी सूची "संकेत" बटन पर "अबाउट" नेविगेशन आइटम के माध्यम से देखी जा सकती है।_

### 6.0.1
- दशमलव अंश से नीचे की मुद्राओं के लिए विनिमय की अनुमति देना

### 6.0.0
- Android के लिए स्क्रीन / होम विजेट जोड़ना
- सापेक्ष बजट में सुधार
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_it.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
_L'elenco completo degli aggiornamenti può essere consultato tramite la voce di navigazione “Informazioni” del
pulsante “Suggerimenti”._

### 6.0.1
- Permettere gli scambi per le valute al di sotto delle frazioni decimali

### 6.0.0
- Aggiunta di un widget per lo schermo / la casa per Android
- Miglioramento dei bilanci relativi
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_更新の完全なリストは、「ヒント」ボタンの「バージョン情報」ナビゲーショ ンアイテムから見ることができます。_

### 6.0.1
- 小数点以下の通貨の交換を許可する

### 6.0.0
- Android用スクリーン/ホームウィジェットの追加
- 相対予算の改善
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_전체 업데이트 목록은 '힌트' 버튼의 '정보' 탐색 항목을 통해 확인할 수 있습니다._

### 6.0.1
- 소수점 이하의 화폐에 대한 환전 허용

### 6.0.0
- Android용 화면/홈 위젯 추가
- 상대 예산 개선
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_nl.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_De volledige lijst met updates kan worden bekeken via het navigatie-item “Over” op de knop “Hints”._

### 6.0.1
- Inwisselen van valuta onder decimale fracties toestaan

### 6.0.0
- Scherm / thuiswidget voor Android toevoegen
- Relatieve budgetten verbeteren
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_pl.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Pełną listę aktualizacji można wyświetlić za pomocą elementu nawigacyjnego "O aplikacji" na przycisku "Wskazówki"._

### 6.0.1
- Umożliwienie wymiany walut poniżej ułamków dziesiętnych

### 6.0.0
- Dodanie ekranu / widżetu domowego dla systemu Android
- Poprawa budżetów względnych
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_A lista completa de actualizações pode ser consultada através do item de navegação "Acerca" no botão "Sugestões"._

### 6.0.1
- Permitir trocas para moedas abaixo das fracções decimais

### 6.0.0
- Adicionar widget de ecrã / casa para Android
- Melhorar os orçamentos relativos
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_pt_BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_A lista completa de atualizações pode ser visualizada no item de navegação "Sobre" no botão "Dicas"._

### 6.0.1
- Permitir trocas de moedas abaixo de frações decimais

### 6.0.0
- Adição de widget de tela / home para Android
- Aprimoramento dos orçamentos relativos
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_tr.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Güncellemelerin tam listesi “İpuçları” düğmesindeki “Hakkında” gezinti öğesi aracılığıyla görüntülenebilir._

### 6.0.1
- Ondalık kesirlerin altındaki para birimleri için değişimlere izin verilmesi

### 6.0.0
- Android için ekran / ana sayfa widget'ı ekleme
- Göreceli bütçelerin iyileştirilmesi
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_uk.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Повний список оновлень можна переглянути за допомогою пункту навігації "Про додаток" на кнопці "Підказки"._

### 6.0.1
- Дозволено обмінювати валюти нижче десяткового дробу

### 6.0.0
- Додавання віджету на екран/додому для Android
- Покращення відносних бюджетів
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_uz.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_Yangilanishlarning toʻliq roʻyxatini “Maslahat” tugmasidagi “Haqida” navigatsiya bandi orqali koʻrish mumkin._

### 6.0.1
- O'nlik kasrdan past bo'lgan valyutalarni almashtirishga ruxsat berish

### 6.0.0
- Android uchun ekran / uy vidjetini qo'shish
- Nisbiy byudjetlarni yaxshilash
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

更新的完整列表可通过 "提示 "按钮上的 "关于 "导航项查看。

### 6.0.1
- 允许兑换小数点以下的货币

### 6.0.0
- 为安卓系统添加屏幕/主页小部件
- 改进相对预算
Expand Down
3 changes: 3 additions & 0 deletions assets/l10n/upgrade_zh_TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

_完整的更新清單可透過「關於」導覽項目中的「提示」按鈕查看。_

### 6.0.1
- 允許小數點以下的貨幣兌換

### 6.0.0
- 新增 Android 螢幕/首頁小工具
- 改善相對預算
Expand Down
20 changes: 17 additions & 3 deletions lib/_classes/controller/exchange_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,27 @@ class ExchangeController extends ValueNotifier<ExchangeMap> {
}
}

int? _getDecimals(String uuid) {
int? decimals = CurrencyProvider.find(uuid.split('-')[1])?.decimalDigits;
if (rate[uuid]!.details != null) {
final rateString = rate[uuid]!.details.toString();
final rateDecimals = rateString.contains('.') ? rateString.split('.')[1].length : 0;
if (rateDecimals > (decimals ?? 0)) {
decimals = rateDecimals;
}
}
return decimals;
}

void _updateSum(String uuid) {
List<TextEditingController> pair = value[uuid]!;
if (pair[0].text != '' && rate[uuid] != null) {
rate[uuid]!.details = double.tryParse(pair[0].text);
}
final amount = _getAmount(uuid)?.toFixed(CurrencyProvider.find(uuid.split('-')[1])?.decimalDigits);
final amount = _getAmount(uuid);
final current = double.tryParse(pair[1].text);
if (amount != current) {
final decimals = _getDecimals(uuid);
if (amount?.toFixed(decimals) != current?.toFixed(decimals)) {
pair[1].text = (amount ?? '').toString();
pair[1].notifyListeners();
}
Expand All @@ -119,7 +132,8 @@ class ExchangeController extends ValueNotifier<ExchangeMap> {
List<TextEditingController> pair = value[uuid]!;
final sum = _getRate(uuid, double.tryParse(pair[1].text));
final current = double.tryParse(pair[0].text);
if (sum != current) {
final decimals = _getDecimals(uuid);
if (sum?.toFixed(decimals) != current?.toFixed(decimals)) {
if (sum != null && rate[uuid] != null) {
rate[uuid]!.details = sum;
}
Expand Down

0 comments on commit e7ace4f

Please sign in to comment.