CWA-169 | added tag to body of createTrade(), created crypto_amount_format, bitcoin_amount_format, bitcoin_cash_amount_format, dash_amount_format, ethereum_amount_format, litecoin_amount_format, changed monero_amount_format, added setup_locator for inject the box
Oleksandr Sobol committed
Feb 10, 2020 at 19:50 UTC
163d1c48a440dfa464cad9182ba36bab25939e7e
12 files changed
+79
-12
lib/main.dart
+3
@@ -35,6 +35,7 @@ import 'package:cake_wallet/src/domain/common/wallet_type.dart';
35
import 'package:cake_wallet/src/domain/services/wallet_service.dart';
36
import 'package:cake_wallet/generated/i18n.dart';
37
import 'package:cake_wallet/src/domain/common/language.dart';
38
+import 'package:cake_wallet/src/domain/common/setup_locator.dart';
39
40
void main() async {
41
WidgetsFlutterBinding.ensureInitialized();
@@ -65,6 +66,8 @@ void main() async {
66
await Hive.openBox<Trade>(Trade.boxName, encryptionKey: tradesBoxKey);
67
final walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
68
69
+ setupLocator(trades);
70
+
71
final sharedPreferences = await SharedPreferences.getInstance();
72
final walletService = WalletService();
73
final walletListService = WalletListService(
lib/src/domain/bitcoin/bitcoin_amount_format.dart
new
+6
@@ -0,0 +1,6 @@
1
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
2
+
3
+const bitcoinAmountDivider = 100000000;
4
+
5
+double bitcoinAmountToDouble({int amount}) =>
6
+ cryptoAmountToDouble(amount: amount, divider: bitcoinAmountDivider);
\ No newline at end of file
lib/src/domain/bitcoin_cash/bitcoin_cash_amount_format.dart
new
+6
@@ -0,0 +1,6 @@
1
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
2
+
3
+const bitcoinCashAmountDivider = 100000000;
4
+
5
+double bitcoinCashAmountToDouble({int amount}) =>
6
+ cryptoAmountToDouble(amount: amount, divider: bitcoinCashAmountDivider);
\ No newline at end of file
lib/src/domain/common/crypto_amount_format.dart
new
+1
@@ -0,0 +1 @@
1
+double cryptoAmountToDouble({num amount, num divider}) => amount / divider;
\ No newline at end of file
lib/src/domain/common/setup_locator.dart
new
+7
@@ -0,0 +1,7 @@
1
+import 'package:get_it/get_it.dart';
2
+
3
+GetIt locator = GetIt.instance;
4
+
5
+void setupLocator<T>(T instance) {
6
+ locator.registerSingleton<T>(instance);
7
+}
\ No newline at end of file
lib/src/domain/dash/dash_amount_format.dart
new
+6
@@ -0,0 +1,6 @@
1
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
2
+
3
+const dashAmountDivider = 100000000;
4
+
5
+double dashAmountToDouble({int amount}) =>
6
+ cryptoAmountToDouble(amount: amount, divider: dashAmountDivider);
\ No newline at end of file
lib/src/domain/ethereum/ethereum_amount_format.dart
new
+6
@@ -0,0 +1,6 @@
1
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
2
+
3
+const ethereumAmountDivider = 1000000000000000000;
4
+
5
+double ethereumAmountToDouble({num amount}) =>
6
+ cryptoAmountToDouble(amount: amount, divider: ethereumAmountDivider);
\ No newline at end of file
lib/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart
+27
-10
@@ -14,6 +14,12 @@ import 'package:cake_wallet/src/domain/exchange/morphtoken/morphtoken_request.da
14
import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart';
15
import 'package:cake_wallet/src/domain/exchange/trade_not_created_exeption.dart';
16
import 'package:cake_wallet/src/domain/monero/monero_amount_format.dart';
17
+import 'package:cake_wallet/src/domain/bitcoin/bitcoin_amount_format.dart';
18
+import 'package:cake_wallet/src/domain/bitcoin_cash/bitcoin_cash_amount_format.dart';
19
+import 'package:cake_wallet/src/domain/dash/dash_amount_format.dart';
20
+import 'package:cake_wallet/src/domain/ethereum/ethereum_amount_format.dart';
21
+import 'package:cake_wallet/src/domain/litecoin/litecoin_amount_format.dart';
22
+import 'package:cake_wallet/src/domain/common/setup_locator.dart';
23
24
class MorphTokenExchangeProvider extends ExchangeProvider {
25
MorphTokenExchangeProvider()
@@ -55,7 +61,7 @@ class MorphTokenExchangeProvider extends ExchangeProvider {
61
ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.xmr)
62
]);
63
58
- final trades = Hive.box<Trade>(Trade.boxName);
64
+ final trades = locator.get<Box<Trade>>();
65
66
static const apiUri = 'https://api.morphtoken.com';
67
static const _morphURISuffix = '/morph';
@@ -72,8 +78,6 @@ class MorphTokenExchangeProvider extends ExchangeProvider {
78
79
@override
80
Future<Limits> fetchLimits({CryptoCurrency from, CryptoCurrency to}) async {
75
- const ethereumAmountDivider = 1000000000000000000;
76
- const defaultAmountDivider = 100000000;
81
final url = apiUri + _limitsURISuffix;
82
final headers = {'Content-type': 'application/json'};
83
final body =
@@ -107,13 +111,25 @@ class MorphTokenExchangeProvider extends ExchangeProvider {
111
minFormatted = moneroAmountToDouble(amount: min);
112
maxFormatted = moneroAmountToDouble(amount: max);
113
break;
114
+ case CryptoCurrency.btc:
115
+ minFormatted = bitcoinAmountToDouble(amount: min);
116
+ maxFormatted = bitcoinAmountToDouble(amount: max);
117
+ break;
118
+ case CryptoCurrency.bch:
119
+ minFormatted = bitcoinCashAmountToDouble(amount: min);
120
+ maxFormatted = bitcoinCashAmountToDouble(amount: max);
121
+ break;
122
+ case CryptoCurrency.dash:
123
+ minFormatted = dashAmountToDouble(amount: min);
124
+ maxFormatted = dashAmountToDouble(amount: max);
125
+ break;
126
case CryptoCurrency.eth:
111
- minFormatted = min/ethereumAmountDivider;
112
- maxFormatted = ethMax/ethereumAmountDivider;
127
+ minFormatted = ethereumAmountToDouble(amount: min);
128
+ maxFormatted = ethereumAmountToDouble(amount: ethMax);
129
break;
114
- default:
115
- minFormatted = min/defaultAmountDivider;
116
- maxFormatted = max/defaultAmountDivider;
130
+ case CryptoCurrency.ltc:
131
+ minFormatted = litecoinAmountToDouble(amount: min);
132
+ maxFormatted = litecoinAmountToDouble(amount: max);
133
break;
134
}
135
@@ -133,7 +149,8 @@ class MorphTokenExchangeProvider extends ExchangeProvider {
149
"asset": _request.to.toString(),
150
"weight": weight,
151
"address": _request.address
136
- }]
152
+ }],
153
+ "tag": "cakewallet"
154
};
155
156
final response = await post(url,
@@ -190,7 +207,7 @@ class MorphTokenExchangeProvider extends ExchangeProvider {
207
final state = TradeState.deserialize(raw: status.toLowerCase());
208
209
String amount = "";
193
- for (final trade in trades.values) {
210
+ for (final trade in trades.values.toList()) {
211
if (trade.id == id) {
212
amount = trade.amount;
213
break;
lib/src/domain/litecoin/litecoin_amount_format.dart
new
+6
@@ -0,0 +1,6 @@
1
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
2
+
3
+const litecoinAmountDivider = 100000000;
4
+
5
+double litecoinAmountToDouble({int amount}) =>
6
+ cryptoAmountToDouble(amount: amount, divider: litecoinAmountDivider);
\ No newline at end of file
lib/src/domain/monero/monero_amount_format.dart
+3
-2
@@ -1,4 +1,5 @@
1
import 'package:intl/intl.dart';
2
+import 'package:cake_wallet/src/domain/common/crypto_amount_format.dart';
3
4
const moneroAmountLength = 12;
5
const moneroAmountDivider = 1000000000000;
@@ -7,6 +8,6 @@ final moneroAmountFormat = NumberFormat()
8
..minimumFractionDigits = 1;
9
10
String moneroAmountToString({int amount}) =>
10
- moneroAmountFormat.format(amount / moneroAmountDivider);
11
+ moneroAmountFormat.format(cryptoAmountToDouble(amount: amount, divider: moneroAmountDivider));
12
12
-double moneroAmountToDouble({int amount}) => amount / moneroAmountDivider;
13
+double moneroAmountToDouble({int amount}) => cryptoAmountToDouble(amount: amount, divider: moneroAmountDivider);
pubspec.lock
+7
@@ -301,6 +301,13 @@ packages:
301
url: "https://pub.dartlang.org"
302
source: hosted
303
version: "0.1.19"
304
+ get_it:
305
+ dependency: "direct main"
306
+ description:
307
+ name: get_it
308
+ url: "https://pub.dartlang.org"
309
+ source: hosted
310
+ version: "3.1.0"
311
glob:
312
dependency: transitive
313
description:
pubspec.yaml
+1
@@ -46,6 +46,7 @@ dependencies:
46
hive: ^1.2.0
47
hive_flutter: ^0.2.1
48
package_info: ^0.4.0+13
49
+ get_it: ^3.1.0
50
51
# The following adds the Cupertino Icons font to your application.
52
# Use with the CupertinoIcons class for iOS style icons.