From 4e7e00b975816cffec2d23866c3b5d59fb8445b9 Mon Sep 17 00:00:00 2001
From: David Adegoke <64401859+Blazebrain@users.noreply.github.com>
Date: Tue, 13 Aug 2024 19:25:18 +0100
Subject: [PATCH 1/6] Fix: Remove resolution scope from unstoppable domains
 plugin (#1604)

---
 ios/Runner/AppDelegate.swift | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 0cc4eebe8..402f6556b 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -3,11 +3,7 @@ import Flutter
 import workmanager
 
 @UIApplicationMain
-@objc class AppDelegate: FlutterAppDelegate {
-    lazy var resolution : Resolution? =  {
-               return try? Resolution()
-            }()
-    
+@objc class AppDelegate: FlutterAppDelegate {    
     override func application(
         _ application: UIApplication,
         didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?

From 525df820c3f6bccf7d2f1b419ae261d015bee37f Mon Sep 17 00:00:00 2001
From: Omar Hatem <omarh.ismail1@gmail.com>
Date: Tue, 13 Aug 2024 22:51:25 +0300
Subject: [PATCH 2/6] Generic fixes (#1605)

* minor fixes

* fix not saving wallet password to secure storage

* cache linux deps as well
---
 .github/workflows/cache_dependencies.yml         |  5 ++++-
 cw_monero/lib/api/wallet_manager.dart            |  3 ---
 lib/core/wallet_creation_service.dart            | 13 ++++++-------
 lib/src/screens/new_wallet/new_wallet_page.dart  | 12 ++++++------
 lib/src/screens/restore/wallet_restore_page.dart | 15 +++++++--------
 lib/view_model/wallet_creation_vm.dart           |  2 --
 6 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml
index cca5bb4bf..72a74a8b2 100644
--- a/.github/workflows/cache_dependencies.yml
+++ b/.github/workflows/cache_dependencies.yml
@@ -60,7 +60,7 @@ jobs:
           path: |
             /opt/android/cake_wallet/cw_haven/android/.cxx
             /opt/android/cake_wallet/scripts/monero_c/release
-          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh') }}
+          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh' ,'**/cache_dependencies.yml') }}
 
       - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }}
         name: Generate Externals
@@ -68,3 +68,6 @@ jobs:
           cd /opt/android/cake_wallet/scripts/android/
           source ./app_env.sh cakewallet
           ./build_monero_all.sh
+          cd ../linux/
+          source ./app_env.sh cakewallet
+          ./build_monero_all.sh
diff --git a/cw_monero/lib/api/wallet_manager.dart b/cw_monero/lib/api/wallet_manager.dart
index 14bf92d16..ce4d41010 100644
--- a/cw_monero/lib/api/wallet_manager.dart
+++ b/cw_monero/lib/api/wallet_manager.dart
@@ -8,10 +8,7 @@ import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart';
 import 'package:cw_monero/api/exceptions/wallet_restore_from_keys_exception.dart';
 import 'package:cw_monero/api/exceptions/wallet_restore_from_seed_exception.dart';
 import 'package:cw_monero/api/wallet.dart';
-import 'package:flutter/foundation.dart';
 import 'package:cw_monero/api/transaction_history.dart';
-import 'package:cw_monero/api/wallet.dart';
-import 'package:flutter/foundation.dart';
 import 'package:monero/monero.dart' as monero;
 
 class MoneroCException implements Exception {
diff --git a/lib/core/wallet_creation_service.dart b/lib/core/wallet_creation_service.dart
index 823aa7e84..1e9299282 100644
--- a/lib/core/wallet_creation_service.dart
+++ b/lib/core/wallet_creation_service.dart
@@ -1,4 +1,3 @@
-import 'package:cake_wallet/core/secure_storage.dart';
 import 'package:cake_wallet/di.dart';
 import 'package:cake_wallet/store/settings_store.dart';
 import 'package:cw_core/wallet_info.dart';
@@ -57,9 +56,9 @@ class WalletCreationService {
 
     if (credentials.password == null) {
       credentials.password = generateWalletPassword();
-      await keyService.saveWalletPassword(
-        password: credentials.password!, walletName: credentials.name);
     }
+    await keyService.saveWalletPassword(
+        password: credentials.password!, walletName: credentials.name);
 
     if (_hasSeedPhraseLengthOption) {
       credentials.seedPhraseLength = settingsStore.seedPhraseLength.value;
@@ -99,9 +98,9 @@ class WalletCreationService {
 
     if (credentials.password == null) {
       credentials.password = generateWalletPassword();
-      await keyService.saveWalletPassword(
-        password: credentials.password!, walletName: credentials.name);
     }
+    await keyService.saveWalletPassword(
+        password: credentials.password!, walletName: credentials.name);
 
     final wallet = await _service!.restoreFromKeys(credentials, isTestnet: isTestnet);
 
@@ -118,9 +117,9 @@ class WalletCreationService {
 
     if (credentials.password == null) {
       credentials.password = generateWalletPassword();
-      await keyService.saveWalletPassword(
-        password: credentials.password!, walletName: credentials.name);
     }
+    await keyService.saveWalletPassword(
+        password: credentials.password!, walletName: credentials.name);
 
     final wallet = await _service!.restoreFromSeed(credentials, isTestnet: isTestnet);
 
diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart
index cd5a7ce8d..cb451c056 100644
--- a/lib/src/screens/new_wallet/new_wallet_page.dart
+++ b/lib/src/screens/new_wallet/new_wallet_page.dart
@@ -75,7 +75,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
             _walletNewVM.hasWalletPassword ? TextEditingController() : null;
 
   static const aspectRatioImage = 1.22;
-  static bool formProcessing = false;
+  bool _formProcessing = false;
 
   final GlobalKey<FormState> _formKey;
   final GlobalKey<SeedLanguageSelectorState> _languageSelectorKey;
@@ -350,11 +350,11 @@ class _WalletNameFormState extends State<WalletNameForm> {
   }
 
   void _confirmForm() async {
-    if (formProcessing) return;
-    formProcessing = true;
+    if (_formProcessing) return;
+    _formProcessing = true;
     try {
       if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
-        formProcessing = false;
+        _formProcessing = false;
         return;
       }
       if (_walletNewVM.nameExists(_walletNewVM.name)) {
@@ -374,10 +374,10 @@ class _WalletNameFormState extends State<WalletNameForm> {
                 : null);
       }
     } catch (e) {
-      formProcessing = false;
+      _formProcessing = false;
       rethrow;
     }
-    formProcessing = false;
+    _formProcessing = false;
   }
 
   bool get isPolyseed => widget._seedTypeViewModel.moneroSeedType == SeedType.polyseed;
diff --git a/lib/src/screens/restore/wallet_restore_page.dart b/lib/src/screens/restore/wallet_restore_page.dart
index 29bc29986..c8fa3665e 100644
--- a/lib/src/screens/restore/wallet_restore_page.dart
+++ b/lib/src/screens/restore/wallet_restore_page.dart
@@ -2,7 +2,6 @@ import 'package:cake_wallet/core/execution_state.dart';
 import 'package:cake_wallet/generated/i18n.dart';
 import 'package:cake_wallet/routes.dart';
 import 'package:cake_wallet/src/screens/base_page.dart';
-import 'package:cake_wallet/src/screens/new_wallet/new_wallet_page.dart';
 import 'package:cake_wallet/src/screens/restore/wallet_restore_from_keys_form.dart';
 import 'package:cake_wallet/src/screens/restore/wallet_restore_from_seed_form.dart';
 import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
@@ -81,7 +80,7 @@ class WalletRestorePage extends BasePage {
     });
   }
 
-  static bool formProcessing = false;
+  bool _formProcessing = false;
 
   @override
   Widget middle(BuildContext context) => Observer(
@@ -353,8 +352,8 @@ class WalletRestorePage extends BasePage {
   }
 
   Future<void> _confirmForm(BuildContext context) async {
-    if (formProcessing) return;
-    formProcessing = true;
+    if (_formProcessing) return;
+    _formProcessing = true;
     try {
       // Dismissing all visible keyboard to provide context for navigation
       FocusManager.instance.primaryFocus?.unfocus();
@@ -373,13 +372,13 @@ class WalletRestorePage extends BasePage {
       }
 
       if (!formKey!.currentState!.validate()) {
-        formProcessing = false;
+        _formProcessing = false;
         return;
       }
 
       if (walletRestoreViewModel.nameExists(name)) {
         showNameExistsAlert(formContext!);
-        formProcessing = false;
+        _formProcessing = false;
         return;
       }
 
@@ -428,10 +427,10 @@ class WalletRestorePage extends BasePage {
 
       await walletRestoreViewModel.create(options: _credentials());
     } catch (e) {
-      formProcessing = false;
+      _formProcessing = false;
       rethrow;
     }
-    formProcessing = false;
+    _formProcessing = false;
   }
 
   Future<void> showNameExistsAlert(BuildContext context) {
diff --git a/lib/view_model/wallet_creation_vm.dart b/lib/view_model/wallet_creation_vm.dart
index 43386494e..5a9a1d093 100644
--- a/lib/view_model/wallet_creation_vm.dart
+++ b/lib/view_model/wallet_creation_vm.dart
@@ -110,8 +110,6 @@ abstract class WalletCreationVMBase with Store {
       _appStore.authenticationStore.allowed();
       state = ExecutedSuccessfullyState();
     } catch (e, s) {
-      print("@@@@@@@@");
-      print(s);
       state = FailureState(e.toString());
     }
   }

From b0ece46f29b3829482f42349c8688d74caa43b7d Mon Sep 17 00:00:00 2001
From: OmarHatem <omarh.ismail1@gmail.com>
Date: Tue, 13 Aug 2024 23:15:32 +0300
Subject: [PATCH 3/6] use the cached deps for both jobs [skip ci]

---
 .github/workflows/pr_test_build_android.yml | 2 +-
 .github/workflows/pr_test_build_linux.yml   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/pr_test_build_android.yml b/.github/workflows/pr_test_build_android.yml
index ea8770860..5dbf1610f 100644
--- a/.github/workflows/pr_test_build_android.yml
+++ b/.github/workflows/pr_test_build_android.yml
@@ -78,7 +78,7 @@ jobs:
           path: |
             /opt/android/cake_wallet/cw_haven/android/.cxx
             /opt/android/cake_wallet/scripts/monero_c/release
-          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh') }}
+          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh' ,'**/cache_dependencies.yml') }}
 
       - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }}
         name: Generate Externals
diff --git a/.github/workflows/pr_test_build_linux.yml b/.github/workflows/pr_test_build_linux.yml
index 12c930120..37253e96f 100644
--- a/.github/workflows/pr_test_build_linux.yml
+++ b/.github/workflows/pr_test_build_linux.yml
@@ -75,7 +75,7 @@ jobs:
           path: |
             /opt/android/cake_wallet/cw_haven/android/.cxx
             /opt/android/cake_wallet/scripts/monero_c/release
-          key: linux-${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh') }}
+          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh' ,'**/cache_dependencies.yml') }}
 
       - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }}
         name: Generate Externals

From 390fdda0231d45d6aff44b5d837e19afc04d3068 Mon Sep 17 00:00:00 2001
From: OmarHatem <omarh.ismail1@gmail.com>
Date: Wed, 14 Aug 2024 00:58:13 +0300
Subject: [PATCH 4/6] fix caching linux deps

---
 .github/workflows/cache_dependencies.yml | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml
index 72a74a8b2..f5fbf4826 100644
--- a/.github/workflows/cache_dependencies.yml
+++ b/.github/workflows/cache_dependencies.yml
@@ -37,7 +37,12 @@ jobs:
           channel: stable
 
       - name: Install package dependencies
-        run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang
+        run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python-is-python3 libtool libtinfo5 cmake clang
+
+      - name: Install desktop dependencies
+        run: |
+          sudo apt update
+          sudo apt install -y ninja-build libgtk-3-dev gperf
 
       - name: Execute Build and Setup Commands
         run: |
@@ -70,4 +75,5 @@ jobs:
           ./build_monero_all.sh
           cd ../linux/
           source ./app_env.sh cakewallet
+          ./app_config.sh
           ./build_monero_all.sh

From 20252cdea8b4c822ef643dd2e3cc2315b977aed1 Mon Sep 17 00:00:00 2001
From: OmarHatem <omarh.ismail1@gmail.com>
Date: Wed, 14 Aug 2024 01:37:04 +0300
Subject: [PATCH 5/6] cache only android deps only have linux build as an
 artifact

---
 .github/workflows/cache_dependencies.yml  | 11 +----------
 .github/workflows/pr_test_build_linux.yml | 21 +++++++++++----------
 2 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml
index f5fbf4826..902a44a42 100644
--- a/.github/workflows/cache_dependencies.yml
+++ b/.github/workflows/cache_dependencies.yml
@@ -37,12 +37,7 @@ jobs:
           channel: stable
 
       - name: Install package dependencies
-        run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python-is-python3 libtool libtinfo5 cmake clang
-
-      - name: Install desktop dependencies
-        run: |
-          sudo apt update
-          sudo apt install -y ninja-build libgtk-3-dev gperf
+        run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang
 
       - name: Execute Build and Setup Commands
         run: |
@@ -73,7 +68,3 @@ jobs:
           cd /opt/android/cake_wallet/scripts/android/
           source ./app_env.sh cakewallet
           ./build_monero_all.sh
-          cd ../linux/
-          source ./app_env.sh cakewallet
-          ./app_config.sh
-          ./build_monero_all.sh
diff --git a/.github/workflows/pr_test_build_linux.yml b/.github/workflows/pr_test_build_linux.yml
index 37253e96f..c1a3a3be4 100644
--- a/.github/workflows/pr_test_build_linux.yml
+++ b/.github/workflows/pr_test_build_linux.yml
@@ -174,13 +174,14 @@ jobs:
         with:
           path: /opt/android/cake_wallet/build/linux/x64/release/${{env.BRANCH_NAME}}.zip
 
-      - name: Send Test APK
-        continue-on-error: true
-        uses: adrey/slack-file-upload-action@1.0.5
-        with:
-          token: ${{ secrets.SLACK_APP_TOKEN }}
-          path: /opt/android/cake_wallet/build/linux/x64/release/${{env.BRANCH_NAME}}.zip
-          channel: ${{ secrets.SLACK_APK_CHANNEL }}
-          title: "${{ env.BRANCH_NAME }}_linux.zip"
-          filename: ${{ env.BRANCH_NAME }}_linux.zip
-          initial_comment: ${{ github.event.head_commit.message }}
+#        Just as an artifact would be enough
+#      - name: Send Test APK
+#        continue-on-error: true
+#        uses: adrey/slack-file-upload-action@1.0.5
+#        with:
+#          token: ${{ secrets.SLACK_APP_TOKEN }}
+#          path: /opt/android/cake_wallet/build/linux/x64/release/${{env.BRANCH_NAME}}.zip
+#          channel: ${{ secrets.SLACK_APK_CHANNEL }}
+#          title: "${{ env.BRANCH_NAME }}_linux.zip"
+#          filename: ${{ env.BRANCH_NAME }}_linux.zip
+#          initial_comment: ${{ github.event.head_commit.message }}

From 183f9c191d292ed9fb5d6b1d1bcf6982e1424445 Mon Sep 17 00:00:00 2001
From: Omar Hatem <omarh.ismail1@gmail.com>
Date: Wed, 14 Aug 2024 17:49:56 +0300
Subject: [PATCH 6/6] Update pr_test_build_linux.yml

---
 .github/workflows/pr_test_build_linux.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/pr_test_build_linux.yml b/.github/workflows/pr_test_build_linux.yml
index c1a3a3be4..7935dd177 100644
--- a/.github/workflows/pr_test_build_linux.yml
+++ b/.github/workflows/pr_test_build_linux.yml
@@ -75,7 +75,7 @@ jobs:
           path: |
             /opt/android/cake_wallet/cw_haven/android/.cxx
             /opt/android/cake_wallet/scripts/monero_c/release
-          key: ${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh' ,'**/cache_dependencies.yml') }}
+          key: linux_${{ hashFiles('**/prepare_moneroc.sh' ,'**/build_monero_all.sh' ,'**/cache_dependencies.yml') }}
 
       - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }}
         name: Generate Externals