From aa4d43acb69d1f75a05702eb0621ef13563166b1 Mon Sep 17 00:00:00 2001
From: Oleksandr Sobol <dr.alexander.sobol@gmail.com>
Date: Mon, 20 Jan 2020 21:04:26 +0200
Subject: [PATCH 1/4] CWA-161 | saved recipient address by default for new
 users

---
 lib/src/domain/common/default_settings_migration.dart | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/src/domain/common/default_settings_migration.dart b/lib/src/domain/common/default_settings_migration.dart
index 37fc1d5b8..bad9f69eb 100644
--- a/lib/src/domain/common/default_settings_migration.dart
+++ b/lib/src/domain/common/default_settings_migration.dart
@@ -33,7 +33,7 @@ Future defaultSettingsMigration(
               'current_fee_priority', TransactionPriority.standart.raw);
           await sharedPreferences.setInt('current_balance_display_mode',
               BalanceDisplayMode.availableBalance.raw);
-          await sharedPreferences.setBool('save_recipient_address', false);
+          await sharedPreferences.setBool('save_recipient_address', true);
           await resetToDefault(nodes);
           await changeCurrentNodeToDefault(
               sharedPreferences: sharedPreferences, nodes: nodes);

From 59d8ad1890417948bddd75cf75ac5c886cf264d7 Mon Sep 17 00:00:00 2001
From: Oleksandr Sobol <dr.alexander.sobol@gmail.com>
Date: Mon, 20 Jan 2020 21:18:47 +0200
Subject: [PATCH 2/4] CWA-160 | used existing colors for new currencies

---
 .../address_book/address_book_page.dart       | 24 ++++++++-----------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/lib/src/screens/address_book/address_book_page.dart b/lib/src/screens/address_book/address_book_page.dart
index 4f4146a47..97351f91b 100644
--- a/lib/src/screens/address_book/address_book_page.dart
+++ b/lib/src/screens/address_book/address_book_page.dart
@@ -178,13 +178,13 @@ class AddressBookPage extends BasePage {
         color = Palette.cakeGreenWithOpacity;
         break;
       case CryptoCurrency.ada:
-        color = Colors.blueGrey[700];
+        color = Colors.blue[200];
         break;
       case CryptoCurrency.bch:
         color = Colors.orangeAccent;
         break;
       case CryptoCurrency.bnb:
-        color = Colors.yellow;
+        color = Colors.blue;
         break;
       case CryptoCurrency.btc:
         color = Colors.orange;
@@ -193,7 +193,7 @@ class AddressBookPage extends BasePage {
         color = Colors.blue;
         break;
       case CryptoCurrency.eos:
-        color = Colors.deepPurple;
+        color = Colors.orangeAccent;
         break;
       case CryptoCurrency.eth:
         color = Colors.black;
@@ -202,19 +202,19 @@ class AddressBookPage extends BasePage {
         color = Colors.blue[200];
         break;
       case CryptoCurrency.nano:
-        color = Colors.blue[900];
+        color = Colors.orange;
         break;
       case CryptoCurrency.trx:
-        color = Colors.red;
+        color = Colors.black;
         break;
       case CryptoCurrency.usdt:
-        color = Colors.teal;
+        color = Colors.blue[200];
         break;
       case CryptoCurrency.xlm:
-        color = Colors.grey[100];
+        color = color = Colors.blue;
         break;
       case CryptoCurrency.xrp:
-        color = Colors.blueAccent;
+        color = Colors.orangeAccent;
         break;
       default:
         color = Colors.white;
@@ -229,14 +229,10 @@ class AddressBookPage extends BasePage {
         color = Palette.cakeGreen;
         break;
       case CryptoCurrency.ltc:
+      case CryptoCurrency.ada:
+      case CryptoCurrency.usdt:
         color = Palette.lightBlue;
         break;
-      case CryptoCurrency.xlm:
-        color = Colors.blueAccent;
-        break;
-      case CryptoCurrency.xrp:
-        color = Colors.black;
-        break;
       default:
         color = Colors.white;
     }

From 2a4d9a8fa6d5cc54404bac4dab1dea7f28791b53 Mon Sep 17 00:00:00 2001
From: Oleksandr Sobol <dr.alexander.sobol@gmail.com>
Date: Tue, 21 Jan 2020 21:29:02 +0200
Subject: [PATCH 3/4] CWA-163 | added integrated address for xmr to validation

---
 lib/src/stores/address_book/address_book_store.dart         | 6 +++---
 lib/src/stores/exchange/exchange_store.dart                 | 6 +++---
 lib/src/stores/send/send_store.dart                         | 6 +++---
 .../stores/wallet_restoration/wallet_restoration_store.dart | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/src/stores/address_book/address_book_store.dart b/lib/src/stores/address_book/address_book_store.dart
index 13bd8f591..527809cbd 100644
--- a/lib/src/stores/address_book/address_book_store.dart
+++ b/lib/src/stores/address_book/address_book_store.dart
@@ -45,15 +45,15 @@ abstract class AddressBookStoreBase with Store {
   }
 
   void validateAddress(String value, {CryptoCurrency cryptoCurrency}) {
-    // XMR (95), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
+    // XMR (95, 106), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
     // ETH (42), LTC (34), NANO (64, 65), TRX (34), USDT (42), XLM (56), XRP (34)
-    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$';
+    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$|^[0-9a-zA-Z]{106}\$';
     final regExp = RegExp(pattern);
     isValid = regExp.hasMatch(value);
     if (isValid && cryptoCurrency != null) {
       switch (cryptoCurrency) {
         case CryptoCurrency.xmr:
-          isValid = (value.length == 95);
+          isValid = (value.length == 95)||(value.length == 106);
           break;
         case CryptoCurrency.ada:
           isValid = (value.length == 59)||(value.length == 92)||(value.length == 105);
diff --git a/lib/src/stores/exchange/exchange_store.dart b/lib/src/stores/exchange/exchange_store.dart
index 7d20fd6c8..a0cf932e4 100644
--- a/lib/src/stores/exchange/exchange_store.dart
+++ b/lib/src/stores/exchange/exchange_store.dart
@@ -226,15 +226,15 @@ abstract class ExchangeStoreBase with Store {
   }
 
   void validateAddress(String value, {CryptoCurrency cryptoCurrency}) {
-    // XMR (95), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
+    // XMR (95, 106), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
     // ETH (42), LTC (34), NANO (64, 65), TRX (34), USDT (42), XLM (56), XRP (34)
-    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$';
+    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$|^[0-9a-zA-Z]{106}\$';
     final regExp = RegExp(pattern);
     isValid = regExp.hasMatch(value);
     if (isValid && cryptoCurrency != null) {
       switch (cryptoCurrency) {
         case CryptoCurrency.xmr:
-          isValid = (value.length == 95);
+          isValid = (value.length == 95)||(value.length == 106);
           break;
         case CryptoCurrency.ada:
           isValid = (value.length == 59)||(value.length == 92)||(value.length == 105);
diff --git a/lib/src/stores/send/send_store.dart b/lib/src/stores/send/send_store.dart
index 494927857..dbad353c4 100644
--- a/lib/src/stores/send/send_store.dart
+++ b/lib/src/stores/send/send_store.dart
@@ -155,15 +155,15 @@ abstract class SendStoreBase with Store {
   }
 
   void validateAddress(String value, {CryptoCurrency cryptoCurrency}) {
-    // XMR (95), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
+    // XMR (95, 106), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
     // ETH (42), LTC (34), NANO (64, 65), TRX (34), USDT (42), XLM (56), XRP (34)
-    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$';
+    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$|^[0-9a-zA-Z]{106}\$';
     final regExp = RegExp(pattern);
     isValid = regExp.hasMatch(value);
     if (isValid && cryptoCurrency != null) {
       switch (cryptoCurrency) {
         case CryptoCurrency.xmr:
-          isValid = (value.length == 95);
+          isValid = (value.length == 95)||(value.length == 106);
           break;
         case CryptoCurrency.ada:
           isValid = (value.length == 59)||(value.length == 92)||(value.length == 105);
diff --git a/lib/src/stores/wallet_restoration/wallet_restoration_store.dart b/lib/src/stores/wallet_restoration/wallet_restoration_store.dart
index 2565bfc24..fad8f20d8 100644
--- a/lib/src/stores/wallet_restoration/wallet_restoration_store.dart
+++ b/lib/src/stores/wallet_restoration/wallet_restoration_store.dart
@@ -116,15 +116,15 @@ abstract class WalleRestorationStoreBase with Store {
   }
 
   void validateAddress(String value, {CryptoCurrency cryptoCurrency}) {
-    // XMR (95), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
+    // XMR (95, 106), ADA (59, 92, 105), BCH (42), BNB (42), BTC (34, 42), DASH (34), EOS (42),
     // ETH (42), LTC (34), NANO (64, 65), TRX (34), USDT (42), XLM (56), XRP (34)
-    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$';
+    const pattern = '^[0-9a-zA-Z]{95}\$|^[0-9a-zA-Z]{34}\$|^[0-9a-zA-Z]{42}\$|^[0-9a-zA-Z]{56}\$|^[0-9a-zA-Z]{59}\$|^[0-9a-zA-Z_]{64}\$|^[0-9a-zA-Z_]{65}\$|^[0-9a-zA-Z]{92}\$|^[0-9a-zA-Z]{105}\$|^[0-9a-zA-Z]{106}\$';
     final regExp = RegExp(pattern);
     isValid = regExp.hasMatch(value);
     if (isValid && cryptoCurrency != null) {
       switch (cryptoCurrency) {
         case CryptoCurrency.xmr:
-          isValid = (value.length == 95);
+          isValid = (value.length == 95)||(value.length == 106);
           break;
         case CryptoCurrency.ada:
           isValid = (value.length == 59)||(value.length == 92)||(value.length == 105);

From a6ebf1b0b2d95387ce506c01db7b663c4167985c Mon Sep 17 00:00:00 2001
From: Oleksandr Sobol <dr.alexander.sobol@gmail.com>
Date: Thu, 23 Jan 2020 21:27:19 +0200
Subject: [PATCH 4/4] CWA-159 | added setCurrentNodeToDefault method to
 settings store that called when reset button is pressed

---
 lib/src/screens/nodes/nodes_list_page.dart  | 5 +----
 lib/src/stores/settings/settings_store.dart | 6 ++++++
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/src/screens/nodes/nodes_list_page.dart b/lib/src/screens/nodes/nodes_list_page.dart
index d5383e6ed..de8a76442 100644
--- a/lib/src/screens/nodes/nodes_list_page.dart
+++ b/lib/src/screens/nodes/nodes_list_page.dart
@@ -50,10 +50,7 @@ class NodeListPage extends BasePage {
                               onPressed: () async {
                                 Navigator.pop(context);
                                 await nodeList.reset();
-                                if (nodeList.nodes.isNotEmpty) {
-                                  await settings.setCurrentNode(
-                                      node: nodeList.nodes[0]);
-                                }
+                                await settings.setCurrentNodeToDefault();
                               },
                               child: Text(S.of(context).reset))
                         ],
diff --git a/lib/src/stores/settings/settings_store.dart b/lib/src/stores/settings/settings_store.dart
index 4ade305bb..ef6f11236 100644
--- a/lib/src/stores/settings/settings_store.dart
+++ b/lib/src/stores/settings/settings_store.dart
@@ -11,6 +11,7 @@ import 'package:cake_wallet/src/domain/common/transaction_priority.dart';
 import 'package:cake_wallet/src/stores/action_list/action_list_display_mode.dart';
 import 'package:cake_wallet/src/screens/settings/items/item_headers.dart';
 import 'package:cake_wallet/generated/i18n.dart';
+import 'package:cake_wallet/src/domain/common/default_settings_migration.dart';
 
 part 'settings_store.g.dart';
 
@@ -266,4 +267,9 @@ abstract class SettingsStoreBase with Store {
       ItemHeaders.faq: S.current.faq
     });
   }
+
+  Future setCurrentNodeToDefault() async {
+    await changeCurrentNodeToDefault(sharedPreferences: _sharedPreferences, nodes: _nodes);
+    await loadSettings();
+  }
 }