Add trocador provider and password to transaction details

Godwin Asuquo committed Feb 7, 2023 at 19:39 UTC f1b0a5adb6369b66d2e104083f5a1bfe4dd1485c
3 files changed +67 -43
lib/exchange/trade.dart
+31 -20
@@ -8,21 +8,25 @@ part 'trade.g.dart';
8
9 @HiveType(typeId: Trade.typeId)
10 class Trade extends HiveObject {
11 - Trade(
12 - {required this.id,
13 - required this.amount,
14 - ExchangeProviderDescription? provider,
15 - CryptoCurrency? from,
16 - CryptoCurrency? to,
17 - TradeState? state,
18 - this.createdAt,
19 - this.expiredAt,
20 - this.inputAddress,
21 - this.extraId,
22 - this.outputTransaction,
23 - this.refundAddress,
24 - this.walletId,
25 - this.payoutAddress}) {
11 + Trade({
12 + required this.id,
13 + required this.amount,
14 + ExchangeProviderDescription? provider,
15 + CryptoCurrency? from,
16 + CryptoCurrency? to,
17 + TradeState? state,
18 + this.createdAt,
19 + this.expiredAt,
20 + this.inputAddress,
21 + this.extraId,
22 + this.outputTransaction,
23 + this.refundAddress,
24 + this.walletId,
25 + this.payoutAddress,
26 + this.password,
27 + this.providerId,
28 + this.providerName,
29 + }) {
30 if (provider != null) {
31 providerRaw = provider.raw;
32 }
@@ -92,16 +96,23 @@ class Trade extends HiveObject {
96 @HiveField(13)
97 String? payoutAddress;
98
99 + @HiveField(14)
100 + String? password;
101 +
102 + @HiveField(15)
103 + String? providerId;
104 +
105 + @HiveField(16)
106 + String? providerName;
107 +
108 static Trade fromMap(Map<String, Object?> map) {
109 return Trade(
110 id: map['id'] as String,
98 - provider: ExchangeProviderDescription.deserialize(
99 - raw: map['provider'] as int),
111 + provider: ExchangeProviderDescription.deserialize(raw: map['provider'] as int),
112 from: CryptoCurrency.deserialize(raw: map['input'] as int),
113 to: CryptoCurrency.deserialize(raw: map['output'] as int),
102 - createdAt: map['date'] != null
103 - ? DateTime.fromMillisecondsSinceEpoch(map['date'] as int)
104 - : null,
114 + createdAt:
115 + map['date'] != null ? DateTime.fromMillisecondsSinceEpoch(map['date'] as int) : null,
116 amount: map['amount'] as String,
117 walletId: map['wallet_id'] as String);
118 }
lib/exchange/trocador/trocador_exchange_provider.dart
+12
@@ -113,6 +113,9 @@ class TrocadorExchangeProvider extends ExchangeProvider {
113 final state = TradeState.deserialize(raw: status);
114 final payoutAddress = responseJSON['address_user'] as String;
115 final date = responseJSON['date'] as String;
116 + final password = responseJSON['password'] as String;
117 + final providerId = responseJSON['id_provider'] as String;
118 + final providerName = responseJSON['provider'] as String;
119
120 return Trade(
121 id: id,
@@ -122,6 +125,9 @@ class TrocadorExchangeProvider extends ExchangeProvider {
125 inputAddress: inputAddress,
126 refundAddress: refundAddress,
127 state: state,
128 + password: password,
129 + providerId: providerId,
130 + providerName: providerName,
131 createdAt: DateTime.tryParse(date)?.toLocal(),
132 amount: responseJSON['amount_from']?.toString() ?? request.fromAmount,
133 payoutAddress: payoutAddress);
@@ -208,6 +214,9 @@ class TrocadorExchangeProvider extends ExchangeProvider {
214 final to = CryptoCurrency.fromString(responseJSON['ticker_to'] as String);
215 final state = TradeState.deserialize(raw: responseJSON['status'] as String);
216 final date = DateTime.parse(responseJSON['date'] as String);
217 + final password = responseJSON['password'] as String;
218 + final providerId = responseJSON['id_provider'] as String;
219 + final providerName = responseJSON['provider'] as String;
220
221 return Trade(
222 id: id,
@@ -220,6 +229,9 @@ class TrocadorExchangeProvider extends ExchangeProvider {
229 amount: fromAmount,
230 state: state,
231 payoutAddress: payoutAddress,
232 + password: password,
233 + providerId: providerId,
234 + providerName: providerName,
235 );
236 });
237 }
lib/view_model/trade_details_view_model.dart
+24 -23
@@ -23,16 +23,15 @@ import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.
23 import 'package:url_launcher/url_launcher.dart';
24 part 'trade_details_view_model.g.dart';
25
26 -class TradeDetailsViewModel = TradeDetailsViewModelBase
27 - with _$TradeDetailsViewModel;
26 +class TradeDetailsViewModel = TradeDetailsViewModelBase with _$TradeDetailsViewModel;
27
28 abstract class TradeDetailsViewModelBase with Store {
29 TradeDetailsViewModelBase({
30 required Trade tradeForDetails,
31 required this.trades,
33 - required this.settingsStore})
34 - : items = ObservableList<StandartListItem>(),
35 - trade = tradeForDetails {
32 + required this.settingsStore,
33 + }) : items = ObservableList<StandartListItem>(),
34 + trade = tradeForDetails {
35 switch (trade.provider) {
36 case ExchangeProviderDescription.xmrto:
37 _provider = XMRTOExchangeProvider();
@@ -46,7 +45,7 @@ abstract class TradeDetailsViewModelBase with Store {
45 case ExchangeProviderDescription.sideShift:
46 _provider = SideShiftExchangeProvider();
47 break;
49 - case ExchangeProviderDescription.simpleSwap:
48 + case ExchangeProviderDescription.simpleSwap:
49 _provider = SimpleSwapExchangeProvider();
50 break;
51 case ExchangeProviderDescription.trocador:
@@ -100,12 +99,7 @@ abstract class TradeDetailsViewModelBase with Store {
99 items.clear();
100
101 items.add(
103 - DetailsListStatusItem(
104 - title: S.current.trade_details_state,
105 - value: trade.state != null
106 - ? trade.state.toString()
107 - : S.current.trade_details_fetching)
108 - );
102 + DetailsListStatusItem(title: S.current.trade_details_state, value: trade.state.toString()));
103
104 items.add(TradeDetailsListCardItem.tradeDetails(
105 id: trade.id,
@@ -118,15 +112,11 @@ abstract class TradeDetailsViewModelBase with Store {
112 },
113 ));
114
121 - if (trade.provider != null) {
122 - items.add(StandartListItem(
123 - title: S.current.trade_details_provider,
124 - value: trade.provider.toString()));
125 - }
115 + items.add(StandartListItem(
116 + title: S.current.trade_details_provider, value: trade.provider.toString()));
117
118 if (trade.provider == ExchangeProviderDescription.changeNow) {
128 - final buildURL =
129 - 'https://changenow.io/exchange/txs/${trade.id.toString()}';
119 + final buildURL = 'https://changenow.io/exchange/txs/${trade.id.toString()}';
120 items.add(TrackTradeListItem(
121 title: 'Track',
122 value: buildURL,
@@ -137,14 +127,25 @@ abstract class TradeDetailsViewModelBase with Store {
127
128 if (trade.provider == ExchangeProviderDescription.sideShift) {
129 final buildURL = 'https://sideshift.ai/orders/${trade.id.toString()}';
140 - items.add(TrackTradeListItem(
141 - title: 'Track', value: buildURL, onTap: () => launch(buildURL)));
130 + items.add(TrackTradeListItem(title: 'Track', value: buildURL, onTap: () => launch(buildURL)));
131 }
132
133 if (trade.provider == ExchangeProviderDescription.simpleSwap) {
134 final buildURL = 'https://simpleswap.io/exchange?id=${trade.id.toString()}';
146 - items.add(TrackTradeListItem(
147 - title: 'Track', value: buildURL, onTap: () => launch(buildURL)));
135 + items.add(TrackTradeListItem(title: 'Track', value: buildURL, onTap: () => launch(buildURL)));
136 + }
137 +
138 + if (trade.provider == ExchangeProviderDescription.trocador) {
139 + final buildURL = 'https://trocador.app/en/checkout/${trade.id.toString()}';
140 + items.add(TrackTradeListItem(title: 'Track', value: buildURL, onTap: () => launch(buildURL)));
141 +
142 + items.add(StandartListItem(
143 + title: '${trade.providerName} ${S.current.id.toUpperCase()}',
144 + value: trade.providerId ?? ''));
145 +
146 + if (trade.password != null && trade.password!.isNotEmpty)
147 + items.add(StandartListItem(
148 + title: '${trade.providerName} ${S.current.password}', value: trade.password ?? ''));
149 }
150 }
151 }