From bd72f65fc9e970be2762cc2e88738070fb997223 Mon Sep 17 00:00:00 2001 From: julian <julian@cypherstack.com> Date: Tue, 29 Nov 2022 10:33:40 -0600 Subject: [PATCH] allow empty address forms in contact address form validation --- lib/models/contact_address_entry_data.dart | 13 +++++++++++++ .../valid_contact_state_provider.dart | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/models/contact_address_entry_data.dart b/lib/models/contact_address_entry_data.dart index b09e01984..25677b13d 100644 --- a/lib/models/contact_address_entry_data.dart +++ b/lib/models/contact_address_entry_data.dart @@ -33,6 +33,19 @@ class AddressEntryData extends ChangeNotifier { notifyListeners(); } + bool get isEmpty { + if (address != null && address!.isNotEmpty) { + return false; + } + if (addressLabel != null && addressLabel!.isNotEmpty) { + return false; + } + if (coin != null) { + return false; + } + return true; + } + bool get isValid { if (_address == null || coin == null || _addressLabel == null) { return false; diff --git a/lib/providers/ui/address_book_providers/valid_contact_state_provider.dart b/lib/providers/ui/address_book_providers/valid_contact_state_provider.dart index 8ae454346..6cb0687ed 100644 --- a/lib/providers/ui/address_book_providers/valid_contact_state_provider.dart +++ b/lib/providers/ui/address_book_providers/valid_contact_state_provider.dart @@ -5,10 +5,19 @@ final validContactStateProvider = StateProvider.autoDispose.family<bool, List<int>>((ref, ids) { bool isValid = true; + bool hasAtLeastOneValid = false; + for (int i = 0; i < ids.length; i++) { - isValid = isValid && - ref.watch( - addressEntryDataProvider(ids[i]).select((value) => value.isValid)); + final _valid = ref.watch( + addressEntryDataProvider(ids[i]).select((value) => value.isValid)); + + final _isEmpty = ref.watch( + addressEntryDataProvider(ids[i]).select((value) => value.isEmpty)); + + isValid = isValid && (_valid || _isEmpty); + if (_valid) { + hasAtLeastOneValid = true; + } } - return isValid; + return isValid && hasAtLeastOneValid; });