From df9418c7999a817eb9c551fb081e35fd8970fd11 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol <dr.alexander.sobol@gmail.com> Date: Wed, 19 Feb 2020 22:14:39 +0200 Subject: [PATCH] CWA-69 | created formatDomainName() and fetchXmrAddress() in the openalias.dart. Added openalias to send page --- lib/src/domain/common/openalias.dart | 33 ++++++++++++++++++++++++++++ lib/src/screens/send/send_page.dart | 7 ++++++ pubspec.lock | 7 ++++++ pubspec.yaml | 1 + res/values/strings_ko.arb | 4 ---- 5 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 lib/src/domain/common/openalias.dart diff --git a/lib/src/domain/common/openalias.dart b/lib/src/domain/common/openalias.dart new file mode 100644 index 000000000..bdbb224f4 --- /dev/null +++ b/lib/src/domain/common/openalias.dart @@ -0,0 +1,33 @@ +import 'package:basic_utils/basic_utils.dart'; + +String formatDomainName(String name) { + if (!name.contains(".")) { + return ""; + } + + return name.replaceAll("@", "."); +} + +Future<String> fetchXmrAddress(String name) async { + String xmrAddress = ""; + + await DnsUtils.lookupRecord(name, RRecordType.TXT, dnssec: true).then((txtRecord) { + if (txtRecord != null) { + String record; + + for (int i = 0; i < txtRecord.length; i++) { + record = txtRecord[i].data; + + if (record.contains("oa1:xmr") && record.contains("recipient_address")) { + record = record.replaceAll('\"', ""); + xmrAddress = record.split(" ").where((item) => (item.contains("recipient_address"))) + .toString().replaceAll("recipient_address=", "").replaceAll("\;", "") + .replaceAll("(", "").replaceAll(")", ""); + break; + } + } + } + }); + + return xmrAddress; +} \ No newline at end of file diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart index f8fe0bbda..a3cb73c58 100644 --- a/lib/src/screens/send/send_page.dart +++ b/lib/src/screens/send/send_page.dart @@ -22,6 +22,7 @@ import 'package:cake_wallet/src/domain/common/calculate_estimated_fee.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/domain/common/sync_status.dart'; import 'package:cake_wallet/src/stores/sync/sync_store.dart'; +import 'package:cake_wallet/src/domain/common/openalias.dart'; class SendPage extends BasePage { @override @@ -358,6 +359,12 @@ class SendFormState extends State<SendForm> { // Hack. Don't ask me. FocusScope.of(context).requestFocus(FocusNode()); + final domainName = formatDomainName(_addressController.text); + + if (domainName != "") { + await fetchXmrAddress(domainName).then((address) => _addressController.text = address); + } + if (_formKey.currentState.validate()) { await showDialog<void>( context: context, diff --git a/pubspec.lock b/pubspec.lock index ab6b8a29d..5c7088d15 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -43,6 +43,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + basic_utils: + dependency: "direct main" + description: + name: basic_utils + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" boolean_selector: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 318057f0c..58f13a7f5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -53,6 +53,7 @@ dependencies: cupertino_icons: ^0.1.2 encrypt: ^4.0.0 password: ^1.0.0 + basic_utils: ^1.0.8 dev_dependencies: flutter_test: diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 699c6caa7..230ca3197 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -342,9 +342,5 @@ "incorrect_seed" : "입력하신 텍스트가 유효하지 않습니다.", "biometric_auth_reason" : "지문을 스캔하여 인증", -<<<<<<< HEAD -======= - ->>>>>>> 4848485be8cbc34cbec847abbb76dabd075841ae "version" : "버전 ${currentVersion}" } \ No newline at end of file