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