1
part of 'monero.dart';
2
3
class CWMoneroAccountList extends MoneroAccountList {
4
- CWMoneroAccountList(this._wallet);
5
- final Object _wallet;
4
+ CWMoneroAccountList(this._wallet);
5
7
- @override
8
- @computed
6
+ final Object _wallet;
7
+
8
+ @override
9
+ @computed
10
ObservableList<Account> get accounts {
10
- final moneroWallet = _wallet as MoneroWallet;
11
- final accounts = moneroWallet.walletAddresses.accountList
12
- .accounts
13
- .map((acc) => Account(id: acc.id, label: acc.label, balance: acc.balance))
14
- .toList();
15
- return ObservableList<Account>.of(accounts);
11
+ final moneroWallet = _wallet as MoneroWallet;
12
+ final accounts = moneroWallet.walletAddresses.accountList.accounts
13
+ .map((acc) => Account(id: acc.id, label: acc.label, balance: acc.balance))
14
+ .toList();
15
+ return ObservableList<Account>.of(accounts);
16
}
17
18
@override
19
void update(Object wallet) {
20
- final moneroWallet = wallet as MoneroWallet;
21
- moneroWallet.walletAddresses.accountList.update();
20
+ final moneroWallet = wallet as MoneroWallet;
21
+ moneroWallet.walletAddresses.accountList.update();
22
}
23
24
@override
25
- void refresh(Object wallet) {
26
- final moneroWallet = wallet as MoneroWallet;
27
- moneroWallet.walletAddresses.accountList.refresh();
28
- }
25
+ void refresh(Object wallet) {
26
+ final moneroWallet = wallet as MoneroWallet;
27
+ moneroWallet.walletAddresses.accountList.refresh();
28
+ }
29
30
- @override
30
+ @override
31
List<Account> getAll(Object wallet) {
32
- final moneroWallet = wallet as MoneroWallet;
33
- return moneroWallet.walletAddresses.accountList
34
- .getAll()
35
- .map((acc) => Account(id: acc.id, label: acc.label, balance: acc.balance))
36
- .toList();
32
+ final moneroWallet = wallet as MoneroWallet;
33
+ return moneroWallet.walletAddresses.accountList
34
+ .getAll()
35
+ .map((acc) => Account(id: acc.id, label: acc.label, balance: acc.balance))
36
+ .toList();
37
}
38
39
@override
40
Future<void> addAccount(Object wallet, {required String label}) async {
41
- final moneroWallet = wallet as MoneroWallet;
42
- await moneroWallet.walletAddresses.accountList.addAccount(label: label);
41
+ final moneroWallet = wallet as MoneroWallet;
42
+ await moneroWallet.walletAddresses.accountList.addAccount(label: label);
43
}
44
45
@override
46
- Future<void> setLabelAccount(Object wallet, {required int accountIndex, required String label}) async {
47
- final moneroWallet = wallet as MoneroWallet;
48
- await moneroWallet.walletAddresses.accountList
49
- .setLabelAccount(
50
- accountIndex: accountIndex,
51
- label: label);
46
+ Future<void> setLabelAccount(Object wallet,
47
+ {required int accountIndex, required String label}) async {
48
+ final moneroWallet = wallet as MoneroWallet;
49
+ await moneroWallet.walletAddresses.accountList
50
+ .setLabelAccount(accountIndex: accountIndex, label: label);
51
}
52
}
53
54
class CWMoneroSubaddressList extends MoneroSubaddressList {
56
- CWMoneroSubaddressList(this._wallet);
57
- final Object _wallet;
55
+ CWMoneroSubaddressList(this._wallet);
56
+
57
+ final Object _wallet;
58
59
- @override
60
- @computed
59
+ @override
60
+ @computed
61
ObservableList<Subaddress> get subaddresses {
62
- final moneroWallet = _wallet as MoneroWallet;
63
- final subAddresses = moneroWallet.walletAddresses.subaddressList
64
- .subaddresses
65
- .map((sub) => Subaddress(
66
- id: sub.id,
67
- address: sub.address,
68
- label: sub.label))
69
- .toList();
70
- return ObservableList<Subaddress>.of(subAddresses);
62
+ final moneroWallet = _wallet as MoneroWallet;
63
+ final subAddresses = moneroWallet.walletAddresses.subaddressList.subaddresses
64
+ .map((sub) => Subaddress(id: sub.id, address: sub.address, label: sub.label))
65
+ .toList();
66
+ return ObservableList<Subaddress>.of(subAddresses);
67
}
68
69
@override
70
void update(Object wallet, {required int accountIndex}) {
75
- final moneroWallet = wallet as MoneroWallet;
76
- moneroWallet.walletAddresses.subaddressList.update(accountIndex: accountIndex);
71
+ final moneroWallet = wallet as MoneroWallet;
72
+ moneroWallet.walletAddresses.subaddressList.update(accountIndex: accountIndex);
73
}
74
75
@override
76
void refresh(Object wallet, {required int accountIndex}) {
81
- final moneroWallet = wallet as MoneroWallet;
82
- moneroWallet.walletAddresses.subaddressList.refresh(accountIndex: accountIndex);
77
+ final moneroWallet = wallet as MoneroWallet;
78
+ moneroWallet.walletAddresses.subaddressList.refresh(accountIndex: accountIndex);
79
}
80
81
@override
82
List<Subaddress> getAll(Object wallet) {
87
- final moneroWallet = wallet as MoneroWallet;
88
- return moneroWallet.walletAddresses
89
- .subaddressList
90
- .getAll()
91
- .map((sub) => Subaddress(id: sub.id, label: sub.label, address: sub.address))
92
- .toList();
83
+ final moneroWallet = wallet as MoneroWallet;
84
+ return moneroWallet.walletAddresses.subaddressList
85
+ .getAll()
86
+ .map((sub) => Subaddress(id: sub.id, label: sub.label, address: sub.address))
87
+ .toList();
88
}
89
90
@override
96
- Future<void> addSubaddress(Object wallet, {required int accountIndex, required String label}) async {
97
- final moneroWallet = wallet as MoneroWallet;
98
- await moneroWallet.walletAddresses.subaddressList
99
- .addSubaddress(
100
- accountIndex: accountIndex,
101
- label: label);
91
+ Future<void> addSubaddress(Object wallet,
92
+ {required int accountIndex, required String label}) async {
93
+ final moneroWallet = wallet as MoneroWallet;
94
+ await moneroWallet.walletAddresses.subaddressList
95
+ .addSubaddress(accountIndex: accountIndex, label: label);
96
}
97
98
@override
99
Future<void> setLabelSubaddress(Object wallet,
100
{required int accountIndex, required int addressIndex, required String label}) async {
107
- final moneroWallet = wallet as MoneroWallet;
108
- await moneroWallet.walletAddresses.subaddressList
109
- .setLabelSubaddress(
110
- accountIndex: accountIndex,
111
- addressIndex: addressIndex,
112
- label: label);
101
+ final moneroWallet = wallet as MoneroWallet;
102
+ await moneroWallet.walletAddresses.subaddressList
103
+ .setLabelSubaddress(accountIndex: accountIndex, addressIndex: addressIndex, label: label);
104
}
105
}
106
107
class CWMoneroWalletDetails extends MoneroWalletDetails {
117
- CWMoneroWalletDetails(this._wallet);
118
- final Object _wallet;
108
+ CWMoneroWalletDetails(this._wallet);
109
+
110
+ final Object _wallet;
111
120
- @computed
112
+ @computed
113
@override
114
Account get account {
123
- final moneroWallet = _wallet as MoneroWallet;
124
- final acc = moneroWallet.walletAddresses.account;
125
- return Account(id: acc!.id, label: acc.label, balance: acc.balance);
115
+ final moneroWallet = _wallet as MoneroWallet;
116
+ final acc = moneroWallet.walletAddresses.account;
117
+ return Account(id: acc!.id, label: acc.label, balance: acc.balance);
118
}
119
120
@computed
121
@override
130
- MoneroBalance get balance {
131
- final moneroWallet = _wallet as MoneroWallet;
132
- final balance = moneroWallet.balance;
122
+ MoneroBalance get balance {
123
+ final moneroWallet = _wallet as MoneroWallet;
124
+ final balance = moneroWallet.balance;
125
throw Exception('Unimplemented');
134
- // return MoneroBalance();
135
- //return MoneroBalance(
136
- // fullBalance: balance.fullBalance,
137
- // unlockedBalance: balance.unlockedBalance);
138
- }
126
+ // return MoneroBalance();
127
+ //return MoneroBalance(
128
+ // fullBalance: balance.fullBalance,
129
+ // unlockedBalance: balance.unlockedBalance);
130
+ }
131
}
132
133
class CWMonero extends Monero {
134
@override
143
- MoneroAccountList getAccountList(Object wallet) {
144
- return CWMoneroAccountList(wallet);
145
- }
146
-
147
- @override
148
- MoneroSubaddressList getSubaddressList(Object wallet) {
149
- return CWMoneroSubaddressList(wallet);
150
- }
151
-
152
- @override
153
- TransactionHistoryBase getTransactionHistory(Object wallet) {
154
- final moneroWallet = wallet as MoneroWallet;
155
- return moneroWallet.transactionHistory;
156
- }
157
-
158
- @override
159
- MoneroWalletDetails getMoneroWalletDetails(Object wallet) {
160
- return CWMoneroWalletDetails(wallet);
161
- }
162
-
163
- @override
164
- int getHeigthByDate({required DateTime date}) {
165
- return getMoneroHeigthByDate(date: date);
166
- }
167
-
168
- @override
169
- TransactionPriority getDefaultTransactionPriority() {
170
- return MoneroTransactionPriority.automatic;
171
- }
172
-
173
- @override
174
- TransactionPriority getMoneroTransactionPrioritySlow()
175
- => MoneroTransactionPriority.slow;
176
-
177
- @override
178
- TransactionPriority getMoneroTransactionPriorityAutomatic()
179
- => MoneroTransactionPriority.automatic;
180
-
181
- @override
182
- TransactionPriority deserializeMoneroTransactionPriority({required int raw}) {
183
- return MoneroTransactionPriority.deserialize(raw: raw);
184
- }
185
-
186
- @override
187
- List<TransactionPriority> getTransactionPriorities() {
188
- return MoneroTransactionPriority.all;
189
- }
190
-
191
- @override
192
- List<String> getMoneroWordList(String language) {
193
- switch (language.toLowerCase()) {
194
- case 'english':
195
- return EnglishMnemonics.words;
196
- case 'chinese (simplified)':
197
- return ChineseSimplifiedMnemonics.words;
198
- case 'dutch':
199
- return DutchMnemonics.words;
200
- case 'german':
201
- return GermanMnemonics.words;
202
- case 'japanese':
203
- return JapaneseMnemonics.words;
204
- case 'portuguese':
205
- return PortugueseMnemonics.words;
206
- case 'russian':
207
- return RussianMnemonics.words;
208
- case 'spanish':
209
- return SpanishMnemonics.words;
210
- case 'french':
211
- return FrenchMnemonics.words;
212
- case 'italian':
213
- return ItalianMnemonics.words;
214
- default:
215
- return EnglishMnemonics.words;
216
- }
217
- }
218
-
219
- @override
220
- WalletCredentials createMoneroRestoreWalletFromKeysCredentials({
221
- required String name,
222
- required String spendKey,
223
- required String viewKey,
224
- required String address,
225
- required String password,
226
- required String language,
227
- required int height}) {
228
- return MoneroRestoreWalletFromKeysCredentials(
229
- name: name,
230
- spendKey: spendKey,
231
- viewKey: viewKey,
232
- address: address,
233
- password: password,
234
- language: language,
235
- height: height);
236
- }
237
-
238
- @override
239
- WalletCredentials createMoneroRestoreWalletFromSeedCredentials({
240
- required String name,
241
- required String password,
242
- required int height,
243
- required String mnemonic}) {
244
- return MoneroRestoreWalletFromSeedCredentials(
245
- name: name,
246
- password: password,
247
- height: height,
248
- mnemonic: mnemonic);
249
- }
250
-
251
- @override
252
- WalletCredentials createMoneroNewWalletCredentials({
135
+ MoneroAccountList getAccountList(Object wallet) {
136
+ return CWMoneroAccountList(wallet);
137
+ }
138
+
139
+ @override
140
+ MoneroSubaddressList getSubaddressList(Object wallet) {
141
+ return CWMoneroSubaddressList(wallet);
142
+ }
143
+
144
+ @override
145
+ TransactionHistoryBase getTransactionHistory(Object wallet) {
146
+ final moneroWallet = wallet as MoneroWallet;
147
+ return moneroWallet.transactionHistory;
148
+ }
149
+
150
+ @override
151
+ MoneroWalletDetails getMoneroWalletDetails(Object wallet) {
152
+ return CWMoneroWalletDetails(wallet);
153
+ }
154
+
155
+ @override
156
+ int getHeigthByDate({required DateTime date}) {
157
+ return getMoneroHeigthByDate(date: date);
158
+ }
159
+
160
+ @override
161
+ TransactionPriority getDefaultTransactionPriority() {
162
+ return MoneroTransactionPriority.automatic;
163
+ }
164
+
165
+ @override
166
+ TransactionPriority getMoneroTransactionPrioritySlow() => MoneroTransactionPriority.slow;
167
+
168
+ @override
169
+ TransactionPriority getMoneroTransactionPriorityAutomatic() =>
170
+ MoneroTransactionPriority.automatic;
171
+
172
+ @override
173
+ TransactionPriority deserializeMoneroTransactionPriority({required int raw}) {
174
+ return MoneroTransactionPriority.deserialize(raw: raw);
175
+ }
176
+
177
+ @override
178
+ List<TransactionPriority> getTransactionPriorities() {
179
+ return MoneroTransactionPriority.all;
180
+ }
181
+
182
+ @override
183
+ List<String> getMoneroWordList(String language) {
184
+ switch (language.toLowerCase()) {
185
+ case 'english':
186
+ return EnglishMnemonics.words;
187
+ case 'chinese (simplified)':
188
+ return ChineseSimplifiedMnemonics.words;
189
+ case 'dutch':
190
+ return DutchMnemonics.words;
191
+ case 'german':
192
+ return GermanMnemonics.words;
193
+ case 'japanese':
194
+ return JapaneseMnemonics.words;
195
+ case 'portuguese':
196
+ return PortugueseMnemonics.words;
197
+ case 'russian':
198
+ return RussianMnemonics.words;
199
+ case 'spanish':
200
+ return SpanishMnemonics.words;
201
+ case 'french':
202
+ return FrenchMnemonics.words;
203
+ case 'italian':
204
+ return ItalianMnemonics.words;
205
+ default:
206
+ return EnglishMnemonics.words;
207
+ }
208
+ }
209
+
210
+ @override
211
+ WalletCredentials createMoneroRestoreWalletFromKeysCredentials(
212
+ {required String name,
213
+ required String spendKey,
214
+ required String viewKey,
215
+ required String address,
216
+ required String password,
217
+ required String language,
218
+ required int height}) {
219
+ return MoneroRestoreWalletFromKeysCredentials(
220
+ name: name,
221
+ spendKey: spendKey,
222
+ viewKey: viewKey,
223
+ address: address,
224
+ password: password,
225
+ language: language,
226
+ height: height);
227
+ }
228
+
229
+ @override
230
+ WalletCredentials createMoneroRestoreWalletFromSeedCredentials(
231
+ {required String name,
232
+ required String password,
233
+ required int height,
234
+ required String mnemonic}) {
235
+ return MoneroRestoreWalletFromSeedCredentials(
236
+ name: name, password: password, height: height, mnemonic: mnemonic);
237
+ }
238
+
239
+ @override
240
+ WalletCredentials createMoneroNewWalletCredentials({
241
required String name,
242
required String language,
255
- String? password,}) {
256
- return MoneroNewWalletCredentials(
257
- name: name,
258
- password: password,
259
- language: language);
260
- }
261
-
262
- @override
263
- Map<String, String> getKeys(Object wallet) {
264
- final moneroWallet = wallet as MoneroWallet;
265
- final keys = moneroWallet.keys;
266
- return <String, String>{
267
- 'privateSpendKey': keys.privateSpendKey,
243
+ String? password,
244
+ }) {
245
+ return MoneroNewWalletCredentials(name: name, password: password, language: language);
246
+ }
247
+
248
+ @override
249
+ Map<String, String> getKeys(Object wallet) {
250
+ final moneroWallet = wallet as MoneroWallet;
251
+ final keys = moneroWallet.keys;
252
+ return <String, String>{
253
+ 'privateSpendKey': keys.privateSpendKey,
254
'privateViewKey': keys.privateViewKey,
255
'publicSpendKey': keys.publicSpendKey,
270
- 'publicViewKey': keys.publicViewKey};
271
- }
272
-
273
- @override
274
- Object createMoneroTransactionCreationCredentials({
275
- required List<Output> outputs,
276
- required TransactionPriority priority}) {
277
- return MoneroTransactionCreationCredentials(
278
- outputs: outputs.map((out) => OutputInfo(
279
- fiatAmount: out.fiatAmount,
280
- cryptoAmount: out.cryptoAmount,
281
- address: out.address,
282
- note: out.note,
283
- sendAll: out.sendAll,
284
- extractedAddress: out.extractedAddress,
285
- isParsedAddress: out.isParsedAddress,
286
- formattedCryptoAmount: out.formattedCryptoAmount))
287
- .toList(),
288
- priority: priority as MoneroTransactionPriority);
289
- }
290
-
291
- @override
292
- Object createMoneroTransactionCreationCredentialsRaw({
293
- required List<OutputInfo> outputs,
294
- required TransactionPriority priority}) {
295
- return MoneroTransactionCreationCredentials(
296
- outputs: outputs,
297
- priority: priority as MoneroTransactionPriority);
298
- }
299
-
300
- @override
301
- String formatterMoneroAmountToString({required int amount}) {
302
- return moneroAmountToString(amount: amount);
303
- }
304
-
305
- @override
306
- double formatterMoneroAmountToDouble({required int amount}) {
307
- return moneroAmountToDouble(amount: amount);
308
- }
309
-
310
- @override
311
- int formatterMoneroParseAmount({required String amount}) {
312
- return moneroParseAmount(amount: amount);
313
- }
314
-
315
- @override
316
- Account getCurrentAccount(Object wallet) {
317
- final moneroWallet = wallet as MoneroWallet;
318
- final acc = moneroWallet.walletAddresses.account;
319
- return Account(id: acc!.id, label: acc.label, balance: acc.balance);
320
- }
321
-
322
- @override
323
- void setCurrentAccount(Object wallet, int id, String label, String? balance) {
324
- final moneroWallet = wallet as MoneroWallet;
325
- moneroWallet.walletAddresses.account = monero_account.Account(id: id, label: label, balance: balance);
326
- }
327
-
328
- @override
329
- void onStartup() {
330
- monero_wallet_api.onStartup();
331
- }
332
-
333
- @override
334
- int getTransactionInfoAccountId(TransactionInfo tx) {
335
- final moneroTransactionInfo = tx as MoneroTransactionInfo;
336
- return moneroTransactionInfo.accountIndex;
337
- }
338
-
339
- @override
340
- WalletService createMoneroWalletService(Box<WalletInfo> walletInfoSource) {
341
- return MoneroWalletService(walletInfoSource);
342
- }
343
-
344
- @override
345
- String getTransactionAddress(Object wallet, int accountIndex, int addressIndex) {
346
- final moneroWallet = wallet as MoneroWallet;
347
- return moneroWallet.getTransactionAddress(accountIndex, addressIndex);
348
- }
349
-
350
- @override
351
- String getSubaddressLabel(Object wallet, int accountIndex, int addressIndex) {
352
- final moneroWallet = wallet as MoneroWallet;
353
- return moneroWallet.getSubaddressLabel(accountIndex, addressIndex);
354
- }
355
-
356
- @override
357
- Map<String, String> pendingTransactionInfo(Object transaction) {
358
- final ptx = transaction as PendingMoneroTransaction;
359
- return {'id': ptx.id, 'hex': ptx.hex, 'key': ptx.txKey};
360
- }
256
+ 'publicViewKey': keys.publicViewKey
257
+ };
258
+ }
259
+
260
+ @override
261
+ Object createMoneroTransactionCreationCredentials(
262
+ {required List<Output> outputs, required TransactionPriority priority}) {
263
+ return MoneroTransactionCreationCredentials(
264
+ outputs: outputs
265
+ .map((out) => OutputInfo(
266
+ fiatAmount: out.fiatAmount,
267
+ cryptoAmount: out.cryptoAmount,
268
+ address: out.address,
269
+ note: out.note,
270
+ sendAll: out.sendAll,
271
+ extractedAddress: out.extractedAddress,
272
+ isParsedAddress: out.isParsedAddress,
273
+ formattedCryptoAmount: out.formattedCryptoAmount))
274
+ .toList(),
275
+ priority: priority as MoneroTransactionPriority);
276
+ }
277
+
278
+ @override
279
+ Object createMoneroTransactionCreationCredentialsRaw(
280
+ {required List<OutputInfo> outputs, required TransactionPriority priority}) {
281
+ return MoneroTransactionCreationCredentials(
282
+ outputs: outputs, priority: priority as MoneroTransactionPriority);
283
+ }
284
+
285
+ @override
286
+ String formatterMoneroAmountToString({required int amount}) {
287
+ return moneroAmountToString(amount: amount);
288
+ }
289
+
290
+ @override
291
+ double formatterMoneroAmountToDouble({required int amount}) {
292
+ return moneroAmountToDouble(amount: amount);
293
+ }
294
+
295
+ @override
296
+ int formatterMoneroParseAmount({required String amount}) {
297
+ return moneroParseAmount(amount: amount);
298
+ }
299
+
300
+ @override
301
+ Account getCurrentAccount(Object wallet) {
302
+ final moneroWallet = wallet as MoneroWallet;
303
+ final acc = moneroWallet.walletAddresses.account;
304
+ return Account(id: acc!.id, label: acc.label, balance: acc.balance);
305
+ }
306
+
307
+ @override
308
+ void setCurrentAccount(Object wallet, int id, String label, String? balance) {
309
+ final moneroWallet = wallet as MoneroWallet;
310
+ moneroWallet.walletAddresses.account =
311
+ monero_account.Account(id: id, label: label, balance: balance);
312
+ }
313
+
314
+ @override
315
+ void onStartup() {
316
+ monero_wallet_api.onStartup();
317
+ }
318
+
319
+ @override
320
+ int getTransactionInfoAccountId(TransactionInfo tx) {
321
+ final moneroTransactionInfo = tx as MoneroTransactionInfo;
322
+ return moneroTransactionInfo.accountIndex;
323
+ }
324
+
325
+ @override
326
+ WalletService createMoneroWalletService(
327
+ Box<WalletInfo> walletInfoSource, Box<UnspentCoinsInfo> unspentCoinSource) {
328
+ return MoneroWalletService(walletInfoSource, unspentCoinSource);
329
+ }
330
+
331
+ @override
332
+ String getTransactionAddress(Object wallet, int accountIndex, int addressIndex) {
333
+ final moneroWallet = wallet as MoneroWallet;
334
+ return moneroWallet.getTransactionAddress(accountIndex, addressIndex);
335
+ }
336
+
337
+ @override
338
+ String getSubaddressLabel(Object wallet, int accountIndex, int addressIndex) {
339
+ final moneroWallet = wallet as MoneroWallet;
340
+ return moneroWallet.getSubaddressLabel(accountIndex, addressIndex);
341
+ }
342
+
343
+ @override
344
+ Map<String, String> pendingTransactionInfo(Object transaction) {
345
+ final ptx = transaction as PendingMoneroTransaction;
346
+ return {'id': ptx.id, 'hex': ptx.hex, 'key': ptx.txKey};
347
+ }
348
+
349
+ @override
350
+ List<Unspent> getUnspents(Object wallet) {
351
+ final moneroWallet = wallet as MoneroWallet;
352
+ return moneroWallet.unspentCoins
353
+ .map((MoneroUnspent moneroUnspent) => Unspent(moneroUnspent.address, moneroUnspent.hash,
354
+ moneroUnspent.value, 0, moneroUnspent.keyImage))
355
+ .toList();
356
+ }
357
+
358
+ @override
359
+ void updateUnspents(Object wallet) async {
360
+ final moneroWallet = wallet as MoneroWallet;
361
+ await moneroWallet.updateUnspent();
362
+ }
363
}