CW-395-Trade-ID-status-not-updating-in-trade-details-screen (#957)

* fix ChangeNow trade status * formatting * fix hive saving * Revert SideShift changes This reverts commit

Serhii committed Jun 14, 2023 at 23:55 UTC f1904077d2fe96ff061c214d69af1e19a6942673
2 files changed +15 -8
lib/exchange/changenow/changenow_exchange_provider.dart
+4 -4
@@ -192,11 +192,11 @@ class ChangeNowExchangeProvider extends ExchangeProvider {
192 final expectedSendAmount = responseJSON['expectedAmountFrom'].toString();
193 final status = responseJSON['status'] as String;
194 final state = TradeState.deserialize(raw: status);
195 - final extraId = responseJSON['payinExtraId'] as String;
196 - final outputTransaction = responseJSON['payoutHash'] as String;
197 - final expiredAtRaw = responseJSON['validUntil'] as String;
195 + final extraId = responseJSON['payinExtraId'] as String?;
196 + final outputTransaction = responseJSON['payoutHash'] as String?;
197 + final expiredAtRaw = responseJSON['validUntil'] as String?;
198 final payoutAddress = responseJSON['payoutAddress'] as String;
199 - final expiredAt = DateTime.tryParse(expiredAtRaw)?.toLocal();
199 + final expiredAt = DateTime.tryParse(expiredAtRaw ?? '')?.toLocal();
200
201 return Trade(
202 id: id,
lib/view_model/trade_details_view_model.dart
+11 -4
@@ -21,6 +21,7 @@ import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart
21 import 'package:cake_wallet/src/screens/trade_details/trade_details_list_card.dart';
22 import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.dart';
23 import 'package:url_launcher/url_launcher.dart';
24 +import 'package:collection/collection.dart';
25
26 part 'trade_details_view_model.g.dart';
27
@@ -32,7 +33,8 @@ abstract class TradeDetailsViewModelBase with Store {
33 required this.trades,
34 required this.settingsStore,
35 }) : items = ObservableList<StandartListItem>(),
35 - trade = tradeForDetails {
36 + trade = trades.values.firstWhereOrNull((element) => element.id == tradeForDetails.id) ??
37 + tradeForDetails {
38 switch (trade.provider) {
39 case ExchangeProviderDescription.xmrto:
40 _provider = XMRTOExchangeProvider();
@@ -54,8 +56,6 @@ abstract class TradeDetailsViewModelBase with Store {
56 break;
57 }
58
57 - items = ObservableList<StandartListItem>();
58 -
59 _updateItems();
60
61 _updateTrade();
@@ -85,6 +85,12 @@ abstract class TradeDetailsViewModelBase with Store {
85 if (updatedTrade.createdAt == null && trade.createdAt != null) {
86 updatedTrade.createdAt = trade.createdAt;
87 }
88 + Trade? foundElement = trades.values.firstWhereOrNull((element) => element.id == trade.id);
89 + if (foundElement != null) {
90 + final editedTrade = trades.get(foundElement.key);
91 + editedTrade?.stateRaw = updatedTrade.stateRaw;
92 + editedTrade?.save();
93 + }
94
95 trade = updatedTrade;
96
@@ -154,8 +160,9 @@ abstract class TradeDetailsViewModelBase with Store {
160 }
161
162 void _launchUrl(String url) {
163 + final uri = Uri.parse(url);
164 try {
158 - launch(url);
165 + launchUrl(uri);
166 } catch (e) {}
167 }
168 }