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
}