CW-959: Swap Status on Transaction Screen (#2299)

* feat(swap-status-monitor): add real-time swap status monitoring and UI updates

- Introduce SwapManager for automatic tracking of active-wallet swaps.
- Automatically queues new or updated trades from the Hive box.
- Periodically fetch and persist swap statuses via the corresponding trade provider.
- Implement start(wallet, providers), stop(), and dispose() for lifecycle control.
- Apply user's ExchangeApiMode(disabled, tor-only, enabled) when fetching updates.
- Remove swaps from the watchlist on any final state (completed, expired, failed).
- Dispose SwapManager in AppState.dispose() to cancel polling and the Hive subscription.

* refactor(swap-status): replace SwapManager with TradeMonitor for improved trade monitoring.

This change improves the flow by simplifying the trade monitoring logic.

- Removes SwapManager class and replace with TradeMonitor implementation
- Update di and Appstate to register and dispose TradeMonitor
- Modify DashboardViewModel to use TradeMonitor instead of SwapManager

* fix: Modify trade monitoring logic to ensure trade timers are properly disposed when wallet switching occurs

* fix(swap-status): Fix receive amount for exchanges showing as .00 because of null values

* feat(swap-status): Enhance Trade Monitoring

This change:
- Adds a privacy settings option to disable automatic exchange status updates.
- Prevents trade monitoring when privacy settings option is enabled.
- Disables trade monitoring when the app is in background, we only want to run these checks in foreground.
- Refactors the trade monitoring logic to remove unneccessary checks and use of resources.

* feat(swap-status): Enhance Trade Monitoring

This change:
- Adds a privacy settings option to disable automatic exchange status updates.
- Prevents trade monitoring when privacy settings option is enabled.
- Disables trade monitoring when the app is in background, we only want to run these checks in foreground.
- Refactors the trade monitoring logic to remove unneccessary checks and use of resources.

* fix(swap-staus): Prevent unneccessary calls

* feat(swap-status): Prevent api request calls as long as last update time is less than specified interval
This commit is contained in:
David Adegoke 2025-06-04 16:24:56 +01:00 committed by GitHub
parent 1134915920
commit 1d6e594e04
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 455 additions and 82 deletions

View file

@ -250,6 +250,7 @@
"digit_pin": "-رقم PIN",
"digital_and_physical_card": " بطاقة ائتمان رقمية ومادية مسبقة الدفع",
"disable": "إبطال",
"disable_automatic_exchange_status_updates": "تعطيل تحديثات حالة التبادل التلقائي",
"disable_bulletin": "تعطيل نشرة حالة الخدمة",
"disable_buy": "تعطيل إجراء الشراء",
"disable_cake_2fa": "تعطيل 2 عامل المصادقة",

View file

@ -250,6 +250,7 @@
"digit_pin": "-цифрен PIN",
"digital_and_physical_card": " дигитална или физическа предплатена дебитна карта",
"disable": "Деактивиране",
"disable_automatic_exchange_status_updates": "Деактивирайте актуализациите на състоянието на автоматичния обмен",
"disable_bulletin": "Деактивирайте бюлетина за състоянието на услугата",
"disable_buy": "Деактивирайте действието за покупка",
"disable_cake_2fa": "Деактивирайте Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-číselný PIN",
"digital_and_physical_card": " digitální a fyzické předplacené debetní karty,",
"disable": "Zakázat",
"disable_automatic_exchange_status_updates": "Zakázat aktualizace stavu automatické výměny",
"disable_bulletin": "Zakázat status servisního stavu",
"disable_buy": "Zakázat akci nákupu",
"disable_cake_2fa": "Zakázat Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-stellige PIN",
"digital_and_physical_card": "digitale und physische Prepaid-Debitkarte",
"disable": "Deaktivieren",
"disable_automatic_exchange_status_updates": "Deaktivieren Sie die automatischen Austauschstatusaktualisierungen",
"disable_bulletin": "Deaktivieren Sie das Bulletin des Service Status",
"disable_buy": "Kaufaktion deaktivieren",
"disable_cake_2fa": "Cake 2FA deaktivieren",

View file

@ -250,6 +250,7 @@
"digit_pin": "-digit PIN",
"digital_and_physical_card": " digital and physical prepaid debit card",
"disable": "Disable",
"disable_automatic_exchange_status_updates": "Disable Automatic Exchange Status Updates",
"disable_bulletin": "Disable service status bulletin",
"disable_buy": "Disable buy action",
"disable_cake_2fa": "Disable Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-dígito PIN",
"digital_and_physical_card": " tarjeta de débito prepago digital y física",
"disable": "Desactivar",
"disable_automatic_exchange_status_updates": "Deshabilitar actualizaciones de estado de intercambio automático",
"disable_bulletin": "Desactivar el boletín de estado del servicio",
"disable_buy": "Desactivar acción de compra",
"disable_cake_2fa": "Desactivar 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": " chiffres",
"digital_and_physical_card": "carte de débit prépayée numérique et physique",
"disable": "Désactiver",
"disable_automatic_exchange_status_updates": "Désactiver les mises à jour de l'état d'échange automatique",
"disable_bulletin": "Désactiver le bulletin de statut de service",
"disable_buy": "Désactiver l'action d'achat",
"disable_cake_2fa": "Désactiver Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-lambar PIN",
"digital_and_physical_card": "katin zare kudi na dijital da na zahiri",
"disable": "Kashe",
"disable_automatic_exchange_status_updates": "Musaki sabuntawar yanayin canji na atomatik",
"disable_bulletin": "Musaki ma'aunin sabis na sabis",
"disable_buy": "Kashe alama",
"disable_cake_2fa": "Musaki Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-अंक पिन",
"digital_and_physical_card": "डिजिटल और भौतिक प्रीपेड डेबिट कार्ड",
"disable": "अक्षम करना",
"disable_automatic_exchange_status_updates": "स्वचालित एक्सचेंज स्टेटस अपडेट अक्षम करें",
"disable_bulletin": "सेवा स्थिति बुलेटिन अक्षम करें",
"disable_buy": "खरीद कार्रवाई अक्षम करें",
"disable_cake_2fa": "केक 2FA अक्षम करें",
@ -568,8 +569,8 @@
"payjoin_unavailable_sheet_title": "Payjoin अनुपलब्ध क्यों है?",
"payment_id": "भुगतान ID: ",
"payment_made_easy": "भुगतान आसान किया गया",
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"payment_was_received": "आपका भुगतान प्राप्त हुआ था।",
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"payments": "भुगतान",
"pending": " (अपूर्ण)",
"percentageOf": "${amount} का",

View file

@ -250,6 +250,7 @@
"digit_pin": "-znamenkasti PIN",
"digital_and_physical_card": "digitalna i fizička unaprijed plaćena debitna kartica",
"disable": "Onemogući",
"disable_automatic_exchange_status_updates": "Onemogućite ažuriranja automatskog statusa razmjene",
"disable_bulletin": "Onemogućite bilten o statusu usluge",
"disable_buy": "Onemogući kupnju",
"disable_cake_2fa": "Onemogući Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-նիշ ՊԻՆ",
"digital_and_physical_card": " թվային և ֆիզիկական նախավճարային դեբետային քարտ",
"disable": "Անջատել",
"disable_automatic_exchange_status_updates": "Անջատեք ավտոմատ փոխանակման կարգավիճակի թարմացումները",
"disable_bulletin": "Անջատել ծառայության վիճակի տեղեկագիրը",
"disable_buy": "Անջատել գնում գործողությունը",
"disable_cake_2fa": "Անջատել Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-digit PIN",
"digital_and_physical_card": " kartu debit pra-bayar digital dan fisik",
"disable": "Cacat",
"disable_automatic_exchange_status_updates": "Nonaktifkan Pembaruan Status Pertukaran Otomatis",
"disable_bulletin": "Nonaktifkan Buletin Status Layanan",
"disable_buy": "Nonaktifkan tindakan beli",
"disable_cake_2fa": "Nonaktifkan Kue 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-cifre PIN",
"digital_and_physical_card": "carta di debito prepagata digitale e fisica",
"disable": "Disabilita",
"disable_automatic_exchange_status_updates": "Disabilita gli aggiornamenti sullo stato automatico di scambio",
"disable_bulletin": "Disabilita bollettino dello stato del servizio",
"disable_buy": "Disabilita l'azione di acquisto",
"disable_cake_2fa": "Disabilita Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "桁ピン",
"digital_and_physical_card": "デジタルおよび物理プリペイドデビットカード",
"disable": "無効にする",
"disable_automatic_exchange_status_updates": "自動交換ステータスの更新を無効にします",
"disable_bulletin": "サービスステータス速報を無効にします",
"disable_buy": "購入アクションを無効にする",
"disable_cake_2fa": "Cake 2FA を無効にする",

View file

@ -250,6 +250,7 @@
"digit_pin": "자리 PIN",
"digital_and_physical_card": " 디지털 및 실물 선불 직불 카드",
"disable": "비활성화",
"disable_automatic_exchange_status_updates": "자동 교환 상태 업데이트를 비활성화합니다",
"disable_bulletin": "서비스 상태 게시판 비활성화",
"disable_buy": "구매 기능 비활성화",
"disable_cake_2fa": "Cake 2FA 비활성화",

View file

@ -250,6 +250,7 @@
"digit_pin": "-ဂဏန်း PIN",
"digital_and_physical_card": " ဒစ်ဂျစ်တယ်နှင့် ရုပ်ပိုင်းဆိုင်ရာ ကြိုတင်ငွေပေးချေသော ဒက်ဘစ်ကတ်",
"disable": "ပိတ်ပါ။",
"disable_automatic_exchange_status_updates": "အလိုအလျောက်လဲလှယ် status ကို updates များကို disable လုပ်ပါ",
"disable_bulletin": "ဝန်ဆောင်မှုအခြေအနေစာစောင်ကိုပိတ်ပါ",
"disable_buy": "ဝယ်ယူမှု လုပ်ဆောင်ချက်ကို ပိတ်ပါ။",
"disable_cake_2fa": "ကိတ်မုန့် 2FA ကို ပိတ်ပါ။",

View file

@ -250,6 +250,7 @@
"digit_pin": "-cijferige PIN",
"digital_and_physical_card": "digitale en fysieke prepaid debetkaart",
"disable": "Uitzetten",
"disable_automatic_exchange_status_updates": "Schakel automatische uitwisselingsstatusupdates uit",
"disable_bulletin": "Schakel servicestatus Bulletin uit",
"disable_buy": "Koopactie uitschakelen",
"disable_cake_2fa": "Taart 2FA uitschakelen",

View file

@ -250,6 +250,7 @@
"digit_pin": "-znakowy PIN",
"digital_and_physical_card": " cyfrowa i fizyczna przedpłacona karta debetowa",
"disable": "Wyłącz",
"disable_automatic_exchange_status_updates": "Wyłącz automatyczne aktualizacje statusu wymiany",
"disable_bulletin": "Wyłącz biuletyn",
"disable_buy": "Wyłącz akcję kupna",
"disable_cake_2fa": "Wyłącz Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "dígitos",
"digital_and_physical_card": "cartão de débito pré-pago digital e físico",
"disable": "Desativar",
"disable_automatic_exchange_status_updates": "Desativar atualizações automáticas de status de troca",
"disable_bulletin": "Desativar boletim de status de serviço",
"disable_buy": "Desativar ação de compra",
"disable_cake_2fa": "Desabilitar o Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-значный PIN",
"digital_and_physical_card": "цифровая и физическая предоплаченная дебетовая карта",
"disable": "Запрещать",
"disable_automatic_exchange_status_updates": "Отключить обновления автоматического статуса обмена",
"disable_bulletin": "Отключить бюллетень статуса обслуживания",
"disable_buy": "Отключить действие покупки",
"disable_cake_2fa": "Отключить торт 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-หลัก PIN",
"digital_and_physical_card": "บัตรเดบิตดิจิตอลและบัตรพื้นฐาน",
"disable": "ปิดการใช้งาน",
"disable_automatic_exchange_status_updates": "ปิดใช้งานการอัปเดตสถานะการแลกเปลี่ยนอัตโนมัติ",
"disable_bulletin": "ปิดการใช้งาน Bulletin สถานะบริการ",
"disable_buy": "ปิดการใช้งานการซื้อ",
"disable_cake_2fa": "ปิดการใช้งานเค้ก 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-digit PIN",
"digital_and_physical_card": " digital at pisikal na prepaid debit card",
"disable": "Huwag paganahin",
"disable_automatic_exchange_status_updates": "Huwag paganahin ang mga awtomatikong pag -update ng katayuan ng palitan",
"disable_bulletin": "Huwag paganahin ang bulletin ng katayuan ng serbisyo",
"disable_buy": "Huwag paganahin ang pagkilos ng pagbili",
"disable_cake_2fa": "Huwag paganahin ang Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": " haneli PIN",
"digital_and_physical_card": " Dijital para birimleri ile para yükleyebileceğiniz ve ek bilgiye gerek olmayan",
"disable": "Devre dışı bırakmak",
"disable_automatic_exchange_status_updates": "Otomatik Değişim Durum Güncellemelerini Devre Dışı Bırak",
"disable_bulletin": "Hizmet Durumu Bültenini Devre Dışı Bırak",
"disable_buy": "Satın alma işlemini devre dışı bırak",
"disable_cake_2fa": "Cake 2FA'yı Devre Dışı Bırak",

View file

@ -250,6 +250,7 @@
"digit_pin": "-значний PIN",
"digital_and_physical_card": " цифрова та фізична передплачена дебетова картка",
"disable": "Вимкнути",
"disable_automatic_exchange_status_updates": "Вимкнути автоматичні оновлення стану обміну",
"disable_bulletin": "Вимкнути статус послуги",
"disable_buy": "Вимкнути дію покупки",
"disable_cake_2fa": "Вимкнути Cake 2FA",

View file

@ -250,6 +250,7 @@
"digit_pin": "-ہندسوں کا پن",
"digital_and_physical_card": " ڈیجیٹل اور فزیکل پری پیڈ ڈیبٹ کارڈ",
"disable": "غیر فعال کریں۔",
"disable_automatic_exchange_status_updates": "خودکار تبادلہ کی حیثیت کی تازہ کاریوں کو غیر فعال کریں",
"disable_bulletin": "خدمت کی حیثیت کا بلیٹن کو غیر فعال کریں",
"disable_buy": "خرید ایکشن کو غیر فعال کریں۔",
"disable_cake_2fa": "کیک 2FA کو غیر فعال کریں۔",

View file

@ -249,6 +249,7 @@
"digit_pin": "Mã PIN - số",
"digital_and_physical_card": "thẻ ghi nợ trả trước kỹ thuật số và vật lý",
"disable": "Vô hiệu hóa",
"disable_automatic_exchange_status_updates": "Tắt các bản cập nhật trạng thái trao đổi tự động",
"disable_bulletin": "Vô hiệu hóa bản tin tình trạng dịch vụ",
"disable_buy": "Vô hiệu hóa chức năng mua",
"disable_cake_2fa": "Vô hiệu hóa 2FA Cake",

View file

@ -250,6 +250,7 @@
"digit_pin": "-díjíìtì òǹkà ìdánimọ̀ àdáni",
"digital_and_physical_card": " káàdì ìrajà t'ara àti ti ayélujára",
"disable": "Ko si",
"disable_automatic_exchange_status_updates": "Mu awọn imudojuiwọn ipo paṣipaarọ aifọwọyi",
"disable_bulletin": "Mu blogti ipo ipo ṣiṣẹ",
"disable_buy": "Ko iṣọrọ ọja",
"disable_cake_2fa": "Ko 2FA Cake sii",

View file

@ -250,6 +250,7 @@
"digit_pin": "位 PIN",
"digital_and_physical_card": "数字和物理预付借记卡",
"disable": "停用",
"disable_automatic_exchange_status_updates": "禁用自动交换状态更新",
"disable_bulletin": "禁用服务状态公告",
"disable_buy": "禁用购买操作",
"disable_cake_2fa": "禁用蛋糕 2FA",