diff --git a/lib/data/models/static/currency_model.dart b/lib/data/models/static/currency_model.dart index 676bc7f17..db341c96f 100644 --- a/lib/data/models/static/currency_model.dart +++ b/lib/data/models/static/currency_model.dart @@ -1,6 +1,8 @@ import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; +import 'package:invoiceninja/data/models/entities.dart'; +import 'package:invoiceninja/redux/app/app_state.dart'; part 'currency_model.g.dart'; @@ -35,7 +37,7 @@ class CurrencyFields { static const String exchangeRate = 'exchangeRate'; } -abstract class CurrencyEntity implements Built { +abstract class CurrencyEntity extends Object with SelectableEntity implements Built { factory CurrencyEntity() { return _$CurrencyEntity._( @@ -52,8 +54,6 @@ abstract class CurrencyEntity implements Built get serializer => _$currencyEntitySerializer; } \ No newline at end of file diff --git a/lib/data/models/static/language_model.dart b/lib/data/models/static/language_model.dart index 9beac87f3..229c1d0e8 100644 --- a/lib/data/models/static/language_model.dart +++ b/lib/data/models/static/language_model.dart @@ -1,6 +1,8 @@ import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; +import 'package:invoiceninja/data/models/entities.dart'; +import 'package:invoiceninja/redux/app/app_state.dart'; part 'language_model.g.dart'; @@ -30,7 +32,7 @@ class LanguageFields { } -abstract class LanguageEntity implements Built { +abstract class LanguageEntity extends Object with SelectableEntity implements Built { factory LanguageEntity() { return _$LanguageEntity._( @@ -41,10 +43,51 @@ abstract class LanguageEntity implements Built get serializer => _$languageEntitySerializer; } diff --git a/lib/redux/static/static_selectors.dart b/lib/redux/static/static_selectors.dart index 32099f349..f97dc54bb 100644 --- a/lib/redux/static/static_selectors.dart +++ b/lib/redux/static/static_selectors.dart @@ -1,5 +1,5 @@ import 'package:built_collection/built_collection.dart'; -import 'package:invoiceninja/data/models/static/country_model.dart'; +import 'package:invoiceninja/data/models/models.dart'; import 'package:memoize/memoize.dart'; @@ -13,4 +13,29 @@ List countryList(BuiltMap countryMap) { .compareTo(countryMap[idB].listDisplayName)); return list; -} \ No newline at end of file +} + +var memoizedLanguageList = memo1((BuiltMap languageMap) => + languageList(languageMap)); + +List languageList(BuiltMap languageMap) { + final list = languageMap.keys.toList(); + + list.sort((idA, idB) => languageMap[idA].listDisplayName + .compareTo(languageMap[idB].listDisplayName)); + + return list; +} + +var memoizedCurrencyList = memo1((BuiltMap currencyMap) => + currencyList(currencyMap)); + +List currencyList(BuiltMap currencyMap) { + final list = currencyMap.keys.toList(); + + list.sort((idA, idB) => currencyMap[idA].listDisplayName + .compareTo(currencyMap[idB].listDisplayName)); + + return list; +} + diff --git a/lib/ui/invoice/edit/invoice_item_selector.dart b/lib/ui/invoice/edit/invoice_item_selector.dart index b25b86aa4..760b9ffac 100644 --- a/lib/ui/invoice/edit/invoice_item_selector.dart +++ b/lib/ui/invoice/edit/invoice_item_selector.dart @@ -15,7 +15,7 @@ class InvoiceItemSelector extends StatefulWidget { class _InvoiceItemSelectorState extends State { String _filter; - List _selectedIds = []; + final List _selectedIds = []; final _textController = TextEditingController(); //EntityType _selectedEntityType = EntityType.product;