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
}