Cw-58: Show subaddress label on the transaction details page (#333)
* CW-58: Show subaddress label on the transaction details page * add translations * Fix interface
clear committed
Apr 12, 2022 at 17:38 UTC
135ede6a78f8d293ce97ad0ac7591ce7349375b1
23 files changed
+69
-13
cw_monero/ios/Classes/monero_api.cpp
+5
@@ -766,6 +766,11 @@ extern "C"
766
return strdup(m_wallet->getTxKey(std::string(txId)).c_str());
767
}
768
769
+ char *get_subaddress_label(uint32_t accountIndex, uint32_t addressIndex)
770
+ {
771
+ return strdup(get_current_wallet()->getSubaddressLabel(accountIndex, addressIndex).c_str());
772
+ }
773
+
774
#ifdef __cplusplus
775
}
776
#endif
cw_monero/lib/api/signatures.dart
+4
@@ -120,3 +120,7 @@ typedef close_current_wallet = Void Function();
120
typedef on_startup = Void Function();
121
122
typedef rescan_blockchain = Void Function();
123
+
124
+typedef get_subaddress_label = Pointer<Utf8> Function(
125
+ Int32 accountIndex,
126
+ Int32 addressIndex);
\ No newline at end of file
cw_monero/lib/api/types.dart
+5
-1
@@ -117,4 +117,8 @@ typedef CloseCurrentWallet = void Function();
117
118
typedef OnStartup = void Function();
119
120
-typedef RescanBlockchainAsync = void Function();
\ No newline at end of file
120
+typedef RescanBlockchainAsync = void Function();
121
+
122
+typedef GetSubaddressLabel = Pointer<Utf8> Function(
123
+ int accountIndex,
124
+ int addressIndex);
\ No newline at end of file
cw_monero/lib/api/wallet.dart
+8
@@ -112,6 +112,10 @@ final rescanBlockchainAsyncNative = moneroApi
112
.lookup<NativeFunction<rescan_blockchain>>('rescan_blockchain')
113
.asFunction<RescanBlockchainAsync>();
114
115
+final getSubaddressLabelNative = moneroApi
116
+ .lookup<NativeFunction<get_subaddress_label>>('get_subaddress_label')
117
+ .asFunction<GetSubaddressLabel>();
118
+
119
int getSyncingHeight() => getSyncingHeightNative();
120
121
bool isNeededToRefresh() => isNeededToRefreshNative() != 0;
@@ -327,3 +331,7 @@ Future<bool> isConnected() => compute(_isConnected, 0);
331
Future<int> getNodeHeight() => compute(_getNodeHeight, 0);
332
333
void rescanBlockchainAsync() => rescanBlockchainAsyncNative();
334
+
335
+String getSubaddressLabel(int accountIndex, int addressIndex) {
336
+ return convertUTF8ToString(pointer: getSubaddressLabelNative(accountIndex, addressIndex));
337
+}
\ No newline at end of file
cw_monero/lib/monero_wallet.dart
+4
@@ -314,6 +314,10 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
314
}
315
}
316
317
+ String getSubaddressLabel(int accountIndex, int addressIndex) {
318
+ return monero_wallet.getSubaddressLabel(accountIndex, addressIndex);
319
+ }
320
+
321
List<MoneroTransactionInfo> _getAllTransactions(dynamic _) =>
322
monero_transaction_history
323
.getAllTransations()
lib/monero/cw_monero.dart
+5
@@ -294,4 +294,9 @@ class CWMonero extends Monero {
294
final moneroWallet = wallet as MoneroWallet;
295
return moneroWallet.getTransactionAddress(accountIndex, addressIndex);
296
}
297
+
298
+ String getSubaddressLabel(Object wallet, int accountIndex, int addressIndex) {
299
+ final moneroWallet = wallet as MoneroWallet;
300
+ return moneroWallet.getSubaddressLabel(accountIndex, addressIndex);
301
+ }
302
}
lib/view_model/transaction_details_view_model.dart
+9
@@ -60,6 +60,7 @@ abstract class TransactionDetailsViewModelBase with Store {
60
addressIndex != null) {
61
try {
62
final address = monero.getTransactionAddress(wallet, accountIndex, addressIndex);
63
+ final label = monero.getSubaddressLabel(wallet, accountIndex, addressIndex);
64
65
if (address?.isNotEmpty ?? false) {
66
isRecipientAddressShown = true;
@@ -68,6 +69,14 @@ abstract class TransactionDetailsViewModelBase with Store {
69
title: S.current.transaction_details_recipient_address,
70
value: address));
71
}
72
+
73
+ if (label?.isNotEmpty ?? false) {
74
+ _items.add(
75
+ StandartListItem(
76
+ title: S.current.address_label,
77
+ value: label)
78
+ );
79
+ }
80
} catch (e) {
81
print(e.toString());
82
}
res/values/strings_de.arb
+1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Bezeichnung",
269
"new_subaddress_create" : "Erstellen",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Unteradressenliste",
274
res/values/strings_en.arb
+1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Label name",
269
"new_subaddress_create" : "Create",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Subaddress list",
274
res/values/strings_es.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Nombre de etiqueta",
269
"new_subaddress_create" : "Crear",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Lista de subdirecciones",
274
@@ -528,4 +529,4 @@
529
"search": "Búsqueda",
530
"new_template" : "Nueva plantilla",
531
"electrum_address_disclaimer": "Generamos nuevas direcciones cada vez que usa una, pero las direcciones anteriores siguen funcionando"
531
-}
\ No newline at end of file
532
+}
res/values/strings_fr.arb
+1
@@ -266,6 +266,7 @@
266
"new_subaddress_label_name" : "Nom",
267
"new_subaddress_create" : "Créer",
268
269
+ "address_label" : "Address label",
270
271
"subaddress_title" : "Liste des sous-adresses",
272
res/values/strings_hi.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "लेबल का नाम",
269
"new_subaddress_create" : "सर्जन करना",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "उपखंड सूची",
274
@@ -528,4 +529,4 @@
529
"search": "खोज",
530
"new_template" : "नया टेम्पलेट",
531
"electrum_address_disclaimer": "हर बार जब आप एक का उपयोग करते हैं तो हम नए पते उत्पन्न करते हैं, लेकिन पिछले पते काम करना जारी रखते हैं"
531
-}
\ No newline at end of file
532
+}
res/values/strings_hr.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Oznaka",
269
"new_subaddress_create" : "Izradi",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Lista podadresa",
274
@@ -528,4 +529,4 @@
529
"search": "Traži",
530
"new_template" : "novi predložak",
531
"electrum_address_disclaimer": "Minden egyes alkalommal új címeket generálunk, de a korábbi címek továbbra is működnek"
531
-}
\ No newline at end of file
532
+}
res/values/strings_it.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Nome etichetta",
269
"new_subaddress_create" : "Crea",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Lista sottoindirizzi",
274
@@ -528,4 +529,4 @@
529
"search": "Ricerca",
530
"new_template" : "Nuovo modello",
531
"electrum_address_disclaimer": "Generiamo nuovi indirizzi ogni volta che ne utilizzi uno, ma gli indirizzi precedenti continuano a funzionare"
531
-}
\ No newline at end of file
532
+}
res/values/strings_ja.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "ラベル名",
269
"new_subaddress_create" : "作成する",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "サブアドレス一覧",
274
@@ -528,4 +529,4 @@
529
"search": "検索",
530
"new_template" : "新しいテンプレート",
531
"electrum_address_disclaimer": "使用するたびに新しいアドレスが生成されますが、以前のアドレスは引き続き機能します"
531
-}
\ No newline at end of file
532
+}
res/values/strings_ko.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "라벨 이름",
269
"new_subaddress_create" : "몹시 떠들어 대다",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "하위 주소 목록",
274
@@ -528,4 +529,4 @@
529
"search": "찾다",
530
"new_template" : "새 템플릿",
531
"electrum_address_disclaimer": "사용할 때마다 새 주소가 생성되지만 이전 주소는 계속 작동합니다."
531
-}
\ No newline at end of file
532
+}
res/values/strings_nl.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Label naam",
269
"new_subaddress_create" : "Creëren",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Subadreslijst",
274
@@ -528,4 +529,4 @@
529
"search": "Zoekopdracht",
530
"new_template" : "Nieuwe sjabloon",
531
"electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work"
531
-}
\ No newline at end of file
532
+}
res/values/strings_pl.arb
+2
-1
@@ -271,6 +271,7 @@
271
"new_subaddress_label_name" : "Nazwa etykiety",
272
"new_subaddress_create" : "Stwórz",
273
274
+ "address_label" : "Address label",
275
276
"subaddress_title" : "Lista podadresów",
277
@@ -531,4 +532,4 @@
532
"search": "Szukaj",
533
"new_template" : "Nowy szablon",
534
"electrum_address_disclaimer": "Za każdym razem, gdy korzystasz z jednego z nich, generujemy nowe adresy, ale poprzednie adresy nadal działają"
534
-}
\ No newline at end of file
535
+}
res/values/strings_pt.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Nome",
269
"new_subaddress_create" : "Criar",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Sub-endereços",
274
@@ -528,4 +529,4 @@
529
"search": "Procurar",
530
"new_template" : "Novo modelo",
531
"electrum_address_disclaimer": "Geramos novos endereços cada vez que você usa um, mas os endereços anteriores continuam funcionando"
531
-}
\ No newline at end of file
532
+}
res/values/strings_ru.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "Имя",
269
"new_subaddress_create" : "Создать",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "Список субадресов",
274
@@ -528,4 +529,4 @@
529
"search": "Поиск",
530
"new_template" : "Новый шаблон",
531
"electrum_address_disclaimer": "Мы генерируем новые адреса каждый раз, когда вы их используете, но предыдущие адреса продолжают работать."
531
-}
\ No newline at end of file
532
+}
res/values/strings_uk.arb
+2
-1
@@ -267,6 +267,7 @@
267
"new_subaddress_label_name" : "Ім'я",
268
"new_subaddress_create" : "Створити",
269
270
+ "address_label" : "Address label",
271
272
"subaddress_title" : "Список Субадрес",
273
@@ -527,4 +528,4 @@
528
"search": "Пошук",
529
"new_template" : "Новий шаблон",
530
"electrum_address_disclaimer": "Ми створюємо нові адреси щоразу, коли ви використовуєте їх, але попередні адреси продовжують працювати"
530
-}
\ No newline at end of file
531
+}
res/values/strings_zh.arb
+2
-1
@@ -268,6 +268,7 @@
268
"new_subaddress_label_name" : "标签名称",
269
"new_subaddress_create" : "创建",
270
271
+ "address_label" : "Address label",
272
273
"subaddress_title" : "子地址列表",
274
@@ -526,4 +527,4 @@
527
"search": "搜索",
528
"new_template" : "新模板",
529
"electrum_address_disclaimer": "每次您使用一个地址时,我们都会生成新地址,但之前的地址仍然有效"
529
-}
\ No newline at end of file
530
+}
tool/configure.dart
+2
@@ -209,6 +209,8 @@ abstract class Monero {
209
210
String getTransactionAddress(Object wallet, int accountIndex, int addressIndex);
211
212
+ String getSubaddressLabel(Object wallet, int accountIndex, int addressIndex);
213
+
214
int getHeigthByDate({DateTime date});
215
TransactionPriority getDefaultTransactionPriority();
216
TransactionPriority deserializeMoneroTransactionPriority({int raw});