From 8c016e946cc2a1913d3c16d7213cb447faad6e98 Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Tue, 17 Jan 2023 14:14:02 +0200
Subject: [PATCH 1/6] fix editing label subaddresses

---
 lib/src/screens/subaddress/address_edit_or_create_page.dart     | 2 --
 .../wallet_address_edit_or_create_view_model.dart               | 2 +-
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/lib/src/screens/subaddress/address_edit_or_create_page.dart b/lib/src/screens/subaddress/address_edit_or_create_page.dart
index dac9e3881..b7394182c 100644
--- a/lib/src/screens/subaddress/address_edit_or_create_page.dart
+++ b/lib/src/screens/subaddress/address_edit_or_create_page.dart
@@ -17,8 +17,6 @@ class AddressEditOrCreatePage extends BasePage {
     _labelController.addListener(
         () => addressEditOrCreateViewModel.label = _labelController.text);
     _labelController.text = addressEditOrCreateViewModel.label;
-    print(_labelController.text);
-    print(addressEditOrCreateViewModel.label);
   }
 
   final WalletAddressEditOrCreateViewModel addressEditOrCreateViewModel;
diff --git a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
index 43db6099f..c9d2c77f5 100644
--- a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
+++ b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
@@ -30,7 +30,7 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
       {required WalletBase wallet, dynamic item})
       : isEdit = item != null,
         state = AddressEditOrCreateStateInitial(),
-        label = item?.fullName as String? ?? '',
+        label = item?.name as String? ?? '',
         _item = item,
         _wallet = wallet;
 

From b8f74e50db1920ec8c93eb870b60f16b45d3672b Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Fri, 20 Jan 2023 14:48:44 +0200
Subject: [PATCH 2/6] [skip ci] specify class type

---
 .../wallet_address_edit_or_create_view_model.dart     | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
index c9d2c77f5..c29a256df 100644
--- a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
+++ b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
@@ -1,3 +1,4 @@
+import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
 import 'package:mobx/mobx.dart';
 import 'package:flutter/foundation.dart';
 import 'package:cw_core/wallet_base.dart';
@@ -27,10 +28,10 @@ class AddressEditOrCreateStateFailure extends AddressEditOrCreateState {
 
 abstract class WalletAddressEditOrCreateViewModelBase with Store {
   WalletAddressEditOrCreateViewModelBase(
-      {required WalletBase wallet, dynamic item})
+      {required WalletBase wallet, WalletAddressListItem? item})
       : isEdit = item != null,
         state = AddressEditOrCreateStateInitial(),
-        label = item?.name as String? ?? '',
+        label = item?.name ?? '',
         _item = item,
         _wallet = wallet;
 
@@ -42,7 +43,7 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
 
   bool isEdit;
 
-  final dynamic _item;
+  final WalletAddressListItem? _item;
   final WalletBase _wallet;
 
   Future<void> save() async {
@@ -105,7 +106,7 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
         .setLabelSubaddress(
           wallet,
           accountIndex: monero!.getCurrentAccount(wallet).id,
-          addressIndex: _item.id as int,
+          addressIndex: _item?.id as int,
           label: label);
       await wallet.save();
     }
@@ -116,7 +117,7 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
         .setLabelSubaddress(
           wallet,
           accountIndex: haven!.getCurrentAccount(wallet).id,
-          addressIndex: _item.id as int,
+          addressIndex: _item?.id as int,
           label: label);
       await wallet.save();
     }

From af01cb32435cc22c858c7556df02c2f3c238ff69 Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Fri, 20 Jan 2023 21:44:08 +0200
Subject: [PATCH 3/6] minor fixes

---
 lib/di.dart | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/di.dart b/lib/di.dart
index 1acdad2dd..78fde59e7 100644
--- a/lib/di.dart
+++ b/lib/di.dart
@@ -37,6 +37,7 @@ import 'package:cake_wallet/view_model/settings/other_settings_view_model.dart';
 import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
 import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
 import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
+import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
 import 'package:cw_core/unspent_coins_info.dart';
 import 'package:cake_wallet/core/backup_service.dart';
 import 'package:cw_core/wallet_service.dart';
@@ -365,8 +366,8 @@ Future setup(
       addressListViewModel: getIt.get<WalletAddressListViewModel>(),
       walletViewModel: getIt.get<DashboardViewModel>()));
 
-  getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, dynamic, void>(
-      (dynamic item, _) => WalletAddressEditOrCreateViewModel(
+  getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, WalletAddressListItem, void>(
+      (WalletAddressListItem item, _) => WalletAddressEditOrCreateViewModel(
           wallet: getIt.get<AppStore>().wallet!, item: item));
 
   getIt.registerFactoryParam<AddressEditOrCreatePage, dynamic, void>(

From 2fa7365218572fe59381267707e6275076035a5d Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Fri, 20 Jan 2023 21:50:45 +0200
Subject: [PATCH 4/6] small fix

---
 lib/di.dart | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/di.dart b/lib/di.dart
index 78fde59e7..ae55c0ce6 100644
--- a/lib/di.dart
+++ b/lib/di.dart
@@ -366,8 +366,8 @@ Future setup(
       addressListViewModel: getIt.get<WalletAddressListViewModel>(),
       walletViewModel: getIt.get<DashboardViewModel>()));
 
-  getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, WalletAddressListItem, void>(
-      (WalletAddressListItem item, _) => WalletAddressEditOrCreateViewModel(
+  getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, WalletAddressListItem?, void>(
+      (WalletAddressListItem? item, _) => WalletAddressEditOrCreateViewModel(
           wallet: getIt.get<AppStore>().wallet!, item: item));
 
   getIt.registerFactoryParam<AddressEditOrCreatePage, dynamic, void>(

From 912a4af86646328bd454a4f6f359de73b2a72fbe Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Fri, 20 Jan 2023 23:18:58 +0200
Subject: [PATCH 5/6] fix nullable type

---
 ...let_address_edit_or_create_view_model.dart | 37 ++++++++-----------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
index c29a256df..2cca395ab 100644
--- a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
+++ b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
@@ -99,27 +99,22 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
       await wallet.walletAddresses.updateAddress(_item.address as String);
       await wallet.save();
     }*/
-
-    if (wallet.type == WalletType.monero) {
-      await monero
-        !.getSubaddressList(wallet)
-        .setLabelSubaddress(
-          wallet,
-          accountIndex: monero!.getCurrentAccount(wallet).id,
-          addressIndex: _item?.id as int,
-          label: label);
-      await wallet.save();
-    }
-
-    if (wallet.type == WalletType.haven) {
-      await haven
-        !.getSubaddressList(wallet)
-        .setLabelSubaddress(
-          wallet,
-          accountIndex: haven!.getCurrentAccount(wallet).id,
-          addressIndex: _item?.id as int,
-          label: label);
-      await wallet.save();
+    final index = _item?.id;
+    if (index != null) {
+      if (wallet.type == WalletType.monero) {
+        await monero!.getSubaddressList(wallet).setLabelSubaddress(wallet,
+            accountIndex: monero!.getCurrentAccount(wallet).id, addressIndex: index, label: label);
+        await wallet.save();
+        return;
+      }
+      if (wallet.type == WalletType.haven) {
+        await haven!.getSubaddressList(wallet).setLabelSubaddress(wallet,
+            accountIndex: haven!.getCurrentAccount(wallet).id,
+            addressIndex: _item?.id as int,
+            label: label);
+        await wallet.save();
+        return;
+      }
     }
   }
 }

From ed30cf1e13668d1d1068e51e69b3a0ededd2e4e2 Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Thu, 26 Jan 2023 19:07:19 +0200
Subject: [PATCH 6/6] [skip ci] minor fixes

---
 .../wallet_address_edit_or_create_view_model.dart             | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
index 2cca395ab..a4eb3d386 100644
--- a/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
+++ b/lib/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart
@@ -105,15 +105,13 @@ abstract class WalletAddressEditOrCreateViewModelBase with Store {
         await monero!.getSubaddressList(wallet).setLabelSubaddress(wallet,
             accountIndex: monero!.getCurrentAccount(wallet).id, addressIndex: index, label: label);
         await wallet.save();
-        return;
       }
       if (wallet.type == WalletType.haven) {
         await haven!.getSubaddressList(wallet).setLabelSubaddress(wallet,
             accountIndex: haven!.getCurrentAccount(wallet).id,
-            addressIndex: _item?.id as int,
+            addressIndex: index,
             label: label);
         await wallet.save();
-        return;
       }
     }
   }