diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index 2e86d7de0..b6cd73b26 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -107,7 +107,8 @@ abstract class AppState implements Built { List.generate(kMaxNumberOfCompanies, (i) => i + 1) .map((index) => UserCompanyState(reportErrors)) .toList()), - uiState: UIState(currentRoute: currentRoute), + uiState: UIState( + currentRoute: currentRoute, sortFields: prefState?.sortFields), prefState: prefState ?? PrefState(), ); } diff --git a/lib/redux/client/client_state.dart b/lib/redux/client/client_state.dart index 348a3ab5f..9716f0327 100644 --- a/lib/redux/client/client_state.dart +++ b/lib/redux/client/client_state.dart @@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'client_state.g.dart'; @@ -53,9 +54,10 @@ abstract class ClientState implements Built { abstract class ClientUIState extends Object with EntityUIState implements Built { - factory ClientUIState() { + factory ClientUIState(PrefStateSortField sortField) { return _$ClientUIState._( - listUIState: ListUIState(ClientFields.name), + listUIState: ListUIState(sortField.field ?? ClientFields.name, + sortAscending: sortField?.ascending), editing: ClientEntity(), editingContact: ContactEntity(), saveCompleter: null, diff --git a/lib/redux/company_gateway/company_gateway_state.dart b/lib/redux/company_gateway/company_gateway_state.dart index 8c817d540..7d1f0197b 100644 --- a/lib/redux/company_gateway/company_gateway_state.dart +++ b/lib/redux/company_gateway/company_gateway_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/company_gateway_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'company_gateway_state.g.dart'; @@ -43,9 +44,10 @@ abstract class CompanyGatewayState abstract class CompanyGatewayUIState extends Object with EntityUIState implements Built { - factory CompanyGatewayUIState() { + factory CompanyGatewayUIState(PrefStateSortField sortField) { return _$CompanyGatewayUIState._( - listUIState: ListUIState(CompanyGatewayFields.name), + listUIState: ListUIState(sortField.field ?? CompanyGatewayFields.name, + sortAscending: sortField?.ascending), editing: CompanyGatewayEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/credit/credit_state.dart b/lib/redux/credit/credit_state.dart index 019c53a02..654c36df9 100644 --- a/lib/redux/credit/credit_state.dart +++ b/lib/redux/credit/credit_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/credit_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'credit_state.g.dart'; @@ -53,9 +54,10 @@ abstract class CreditState implements Built { abstract class CreditUIState extends Object with EntityUIState implements Built { - factory CreditUIState() { + factory CreditUIState(PrefStateSortField sortField) { return _$CreditUIState._( - listUIState: ListUIState(CreditFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? CreditFields.number, + sortAscending: sortField?.ascending ?? false), editing: InvoiceEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/design/design_state.dart b/lib/redux/design/design_state.dart index 48fbf9d3f..e1d248ffa 100644 --- a/lib/redux/design/design_state.dart +++ b/lib/redux/design/design_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/design_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'design_state.g.dart'; @@ -55,9 +56,10 @@ abstract class DesignState implements Built { abstract class DesignUIState extends Object with EntityUIState implements Built { - factory DesignUIState() { + factory DesignUIState(PrefStateSortField sortField) { return _$DesignUIState._( - listUIState: ListUIState(DesignFields.name), + listUIState: ListUIState(sortField.field ?? DesignFields.name, + sortAscending: sortField?.ascending), editing: DesignEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/document/document_state.dart b/lib/redux/document/document_state.dart index 888f1b60f..b2bef7219 100644 --- a/lib/redux/document/document_state.dart +++ b/lib/redux/document/document_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/document_model.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'document_state.g.dart'; @@ -35,9 +36,10 @@ abstract class DocumentState abstract class DocumentUIState extends Object with EntityUIState implements Built { - factory DocumentUIState() { + factory DocumentUIState(PrefStateSortField sortField) { return _$DocumentUIState._( - listUIState: ListUIState(DocumentFields.name), + listUIState: ListUIState(sortField.field ?? DocumentFields.name, + sortAscending: sortField?.ascending), editing: DocumentEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/expense/expense_state.dart b/lib/redux/expense/expense_state.dart index 2c4270d2b..9cccb396e 100644 --- a/lib/redux/expense/expense_state.dart +++ b/lib/redux/expense/expense_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/expense_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'expense_state.g.dart'; @@ -55,9 +56,10 @@ abstract class ExpenseState abstract class ExpenseUIState extends Object with EntityUIState implements Built { - factory ExpenseUIState() { + factory ExpenseUIState(PrefStateSortField sortField) { return _$ExpenseUIState._( - listUIState: ListUIState(ExpenseFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? ExpenseFields.number, + sortAscending: sortField?.ascending ?? false), editing: ExpenseEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/expense_category/expense_category_state.dart b/lib/redux/expense_category/expense_category_state.dart index e027c0cc8..130d304f9 100644 --- a/lib/redux/expense_category/expense_category_state.dart +++ b/lib/redux/expense_category/expense_category_state.dart @@ -5,6 +5,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'expense_category_state.g.dart'; @@ -55,9 +56,10 @@ abstract class ExpenseCategoryState abstract class ExpenseCategoryUIState extends Object with EntityUIState implements Built { - factory ExpenseCategoryUIState() { + factory ExpenseCategoryUIState(PrefStateSortField sortField) { return _$ExpenseCategoryUIState._( - listUIState: ListUIState(ExpenseCategoryFields.name), + listUIState: ListUIState(sortField.field ?? ExpenseCategoryFields.name, + sortAscending: sortField?.ascending), editing: ExpenseCategoryEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/group/group_state.dart b/lib/redux/group/group_state.dart index 0850c9e57..cdbd24775 100644 --- a/lib/redux/group/group_state.dart +++ b/lib/redux/group/group_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'group_state.g.dart'; @@ -41,9 +42,10 @@ abstract class GroupState implements Built { abstract class GroupUIState extends Object with EntityUIState implements Built { - factory GroupUIState() { + factory GroupUIState(PrefStateSortField sortField) { return _$GroupUIState._( - listUIState: ListUIState(GroupFields.name), + listUIState: ListUIState(sortField.field ?? GroupFields.name, + sortAscending: sortField?.ascending), editing: GroupEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/invoice/invoice_state.dart b/lib/redux/invoice/invoice_state.dart index ceab6cef7..efa5ad1d3 100644 --- a/lib/redux/invoice/invoice_state.dart +++ b/lib/redux/invoice/invoice_state.dart @@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'invoice_state.g.dart'; @@ -54,9 +55,10 @@ abstract class InvoiceState abstract class InvoiceUIState extends Object with EntityUIState implements Built { - factory InvoiceUIState() { + factory InvoiceUIState(PrefStateSortField sortField) { return _$InvoiceUIState._( - listUIState: ListUIState(InvoiceFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? InvoiceFields.number, + sortAscending: sortField?.ascending ?? false), editing: InvoiceEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/payment/payment_state.dart b/lib/redux/payment/payment_state.dart index fb1dee94b..55af748a4 100644 --- a/lib/redux/payment/payment_state.dart +++ b/lib/redux/payment/payment_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/payment_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'payment_state.g.dart'; @@ -55,9 +56,10 @@ abstract class PaymentState abstract class PaymentUIState extends Object with EntityUIState implements Built { - factory PaymentUIState() { + factory PaymentUIState(PrefStateSortField sortField) { return _$PaymentUIState._( - listUIState: ListUIState(PaymentFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? PaymentFields.number, + sortAscending: sortField?.ascending ?? false), editing: PaymentEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/payment_term/payment_term_state.dart b/lib/redux/payment_term/payment_term_state.dart index 7c0fcfa22..cdcbf9741 100644 --- a/lib/redux/payment_term/payment_term_state.dart +++ b/lib/redux/payment_term/payment_term_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/payment_term_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'payment_term_state.g.dart'; @@ -47,9 +48,10 @@ abstract class PaymentTermState abstract class PaymentTermUIState extends Object with EntityUIState implements Built { - factory PaymentTermUIState() { + factory PaymentTermUIState(PrefStateSortField sortField) { return _$PaymentTermUIState._( - listUIState: ListUIState(PaymentTermFields.name), + listUIState: ListUIState(sortField.field ?? PaymentTermFields.name, + sortAscending: sortField?.ascending), editing: PaymentTermEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/product/product_state.dart b/lib/redux/product/product_state.dart index 61d26b5a0..d9d70238e 100644 --- a/lib/redux/product/product_state.dart +++ b/lib/redux/product/product_state.dart @@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'product_state.g.dart'; @@ -54,9 +55,10 @@ abstract class ProductState abstract class ProductUIState extends Object with EntityUIState implements Built { - factory ProductUIState() { + factory ProductUIState(PrefStateSortField sortField) { return _$ProductUIState._( - listUIState: ListUIState(ProductFields.productKey), + listUIState: ListUIState(sortField.field ?? ProductFields.productKey, + sortAscending: sortField?.ascending), editing: ProductEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/project/project_state.dart b/lib/redux/project/project_state.dart index 83d1aeadc..88a02432f 100644 --- a/lib/redux/project/project_state.dart +++ b/lib/redux/project/project_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/project_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'project_state.g.dart'; @@ -55,9 +56,10 @@ abstract class ProjectState abstract class ProjectUIState extends Object with EntityUIState implements Built { - factory ProjectUIState() { + factory ProjectUIState(PrefStateSortField sortField) { return _$ProjectUIState._( - listUIState: ListUIState(ProjectFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? ProjectFields.number, + sortAscending: sortField?.ascending ?? false), editing: ProjectEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/quote/quote_state.dart b/lib/redux/quote/quote_state.dart index 46d31caa2..0f1d445f1 100644 --- a/lib/redux/quote/quote_state.dart +++ b/lib/redux/quote/quote_state.dart @@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/data/models/invoice_model.dart'; import 'package:invoiceninja_flutter/data/models/quote_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'quote_state.g.dart'; @@ -55,9 +56,10 @@ abstract class QuoteState implements Built { abstract class QuoteUIState extends Object with EntityUIState implements Built { - factory QuoteUIState() { + factory QuoteUIState(PrefStateSortField sortField) { return _$QuoteUIState._( - listUIState: ListUIState(QuoteFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? QuoteFields.number, + sortAscending: sortField?.ascending ?? false), editing: InvoiceEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/recurring_invoice/recurring_invoice_state.dart b/lib/redux/recurring_invoice/recurring_invoice_state.dart index 0ade1cd2a..6e3e57855 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_state.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_state.dart @@ -3,9 +3,11 @@ import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/data/models/invoice_model.dart'; +import 'package:invoiceninja_flutter/data/models/recurring_invoice_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'recurring_invoice_state.g.dart'; @@ -56,9 +58,10 @@ abstract class RecurringInvoiceState abstract class RecurringInvoiceUIState extends Object with EntityUIState implements Built { - factory RecurringInvoiceUIState() { + factory RecurringInvoiceUIState(PrefStateSortField sortField) { return _$RecurringInvoiceUIState._( - listUIState: ListUIState(InvoiceFields.number), + listUIState: ListUIState(sortField.field ?? RecurringInvoiceFields.number, + sortAscending: sortField?.ascending ?? false), editing: InvoiceEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/subscription/subscription_state.dart b/lib/redux/subscription/subscription_state.dart index 7bab33ff2..747f9f1c9 100644 --- a/lib/redux/subscription/subscription_state.dart +++ b/lib/redux/subscription/subscription_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/subscription_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'subscription_state.g.dart'; @@ -55,9 +56,10 @@ abstract class SubscriptionState abstract class SubscriptionUIState extends Object with EntityUIState implements Built { - factory SubscriptionUIState() { + factory SubscriptionUIState(PrefStateSortField sortField) { return _$SubscriptionUIState._( - listUIState: ListUIState(SubscriptionFields.createdAt), + listUIState: ListUIState(sortField.field ?? SubscriptionFields.createdAt, + sortAscending: sortField?.ascending), editing: SubscriptionEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/task/task_state.dart b/lib/redux/task/task_state.dart index 25c1b6aac..6eef31286 100644 --- a/lib/redux/task/task_state.dart +++ b/lib/redux/task/task_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/task_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'task_state.g.dart'; @@ -54,9 +55,10 @@ abstract class TaskState implements Built { abstract class TaskUIState extends Object with EntityUIState implements Built { - factory TaskUIState() { + factory TaskUIState(PrefStateSortField sortField) { return _$TaskUIState._( - listUIState: ListUIState(TaskFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? TaskFields.number, + sortAscending: sortField?.ascending ?? false), editing: TaskEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/task_status/task_status_state.dart b/lib/redux/task_status/task_status_state.dart index bfa3eb7d4..9bafc2c97 100644 --- a/lib/redux/task_status/task_status_state.dart +++ b/lib/redux/task_status/task_status_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/task_status_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'task_status_state.g.dart'; @@ -55,9 +56,10 @@ abstract class TaskStatusState abstract class TaskStatusUIState extends Object with EntityUIState implements Built { - factory TaskStatusUIState() { + factory TaskStatusUIState(PrefStateSortField sortField) { return _$TaskStatusUIState._( - listUIState: ListUIState(TaskStatusFields.order), + listUIState: ListUIState(sortField.field ?? TaskStatusFields.order, + sortAscending: sortField?.ascending), editing: TaskStatusEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/tax_rate/tax_rate_state.dart b/lib/redux/tax_rate/tax_rate_state.dart index 5008dec6d..c6005627a 100644 --- a/lib/redux/tax_rate/tax_rate_state.dart +++ b/lib/redux/tax_rate/tax_rate_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/tax_rate_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'tax_rate_state.g.dart'; @@ -34,9 +35,10 @@ abstract class TaxRateState abstract class TaxRateUIState extends Object with EntityUIState implements Built { - factory TaxRateUIState() { + factory TaxRateUIState(PrefStateSortField sortField) { return _$TaxRateUIState._( - listUIState: ListUIState(TaxRateFields.name), + listUIState: ListUIState(sortField.field ?? TaxRateFields.name, + sortAscending: sortField?.ascending), editing: TaxRateEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/token/token_state.dart b/lib/redux/token/token_state.dart index b3df39867..7b36edcd1 100644 --- a/lib/redux/token/token_state.dart +++ b/lib/redux/token/token_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/token_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'token_state.g.dart'; @@ -45,9 +46,10 @@ abstract class TokenState implements Built { abstract class TokenUIState extends Object with EntityUIState implements Built { - factory TokenUIState() { + factory TokenUIState(PrefStateSortField sortField) { return _$TokenUIState._( - listUIState: ListUIState(TokenFields.name), + listUIState: ListUIState(sortField.field ?? TokenFields.name, + sortAscending: sortField?.ascending), editing: TokenEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/ui/pref_reducer.dart b/lib/redux/ui/pref_reducer.dart index 3eb72a35f..5b4265ef3 100644 --- a/lib/redux/ui/pref_reducer.dart +++ b/lib/redux/ui/pref_reducer.dart @@ -74,7 +74,8 @@ BuiltMap _resortFields( BuiltMap value, EntityType entityType, String field) { - final sortField = value[entityType] ?? PrefStateSortField(field); + final sortField = + value[entityType] ?? PrefStateSortField(field, field != 'number'); final directon = sortField.rebuild((b) => b ..ascending = sortField.field != field || !sortField.ascending ..field = field); diff --git a/lib/redux/ui/pref_state.dart b/lib/redux/ui/pref_state.dart index 456326657..d4ed27be8 100644 --- a/lib/redux/ui/pref_state.dart +++ b/lib/redux/ui/pref_state.dart @@ -131,10 +131,10 @@ abstract class PrefState implements Built { abstract class PrefStateSortField implements Built { - factory PrefStateSortField(String field) { + factory PrefStateSortField(String field, bool ascending) { return _$PrefStateSortField._( - field: field ?? '', - ascending: true, + field: field, + ascending: ascending, ); } diff --git a/lib/redux/ui/ui_state.dart b/lib/redux/ui/ui_state.dart index 60e08fdf0..c8cfbdbe0 100644 --- a/lib/redux/ui/ui_state.dart +++ b/lib/redux/ui/ui_state.dart @@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart'; import 'package:invoiceninja_flutter/redux/product/product_state.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; import 'package:invoiceninja_flutter/ui/auth/login_vm.dart'; import 'package:invoiceninja_flutter/redux/document/document_state.dart'; import 'package:invoiceninja_flutter/redux/expense/expense_state.dart'; @@ -40,7 +41,10 @@ import 'package:invoiceninja_flutter/utils/strings.dart'; part 'ui_state.g.dart'; abstract class UIState implements Built { - factory UIState({String currentRoute}) { + factory UIState({ + String currentRoute, + BuiltMap sortFields, + }) { return _$UIState._( selectedCompanyIndex: 0, filterClearedAt: 0, @@ -48,32 +52,37 @@ abstract class UIState implements Built { previousRoute: '', previewStack: BuiltList(), dashboardUIState: DashboardUIState(), - productUIState: ProductUIState(), - clientUIState: ClientUIState(), - invoiceUIState: InvoiceUIState(), - // STARTER: constructor - do not remove comment - subscriptionUIState: SubscriptionUIState(), - taskStatusUIState: TaskStatusUIState(), - expenseCategoryUIState: ExpenseCategoryUIState(), - recurringInvoiceUIState: RecurringInvoiceUIState(), - webhookUIState: WebhookUIState(), - tokenUIState: TokenUIState(), - paymentTermUIState: PaymentTermUIState(), - designUIState: DesignUIState(), - creditUIState: CreditUIState(), - userUIState: UserUIState(), - taxRateUIState: TaxRateUIState(), - companyGatewayUIState: CompanyGatewayUIState(), - groupUIState: GroupUIState(), - documentUIState: DocumentUIState(), - expenseUIState: ExpenseUIState(), - vendorUIState: VendorUIState(), - taskUIState: TaskUIState(), - projectUIState: ProjectUIState(), - paymentUIState: PaymentUIState(), - quoteUIState: QuoteUIState(), settingsUIState: SettingsUIState(), reportsUIState: ReportsUIState(), + productUIState: ProductUIState(sortFields[EntityType.product]), + clientUIState: ClientUIState(sortFields[EntityType.client]), + invoiceUIState: InvoiceUIState(sortFields[EntityType.invoice]), + subscriptionUIState: + SubscriptionUIState(sortFields[EntityType.subscription]), + taskStatusUIState: TaskStatusUIState(sortFields[EntityType.taskStatus]), + expenseCategoryUIState: + ExpenseCategoryUIState(sortFields[EntityType.expenseCategory]), + recurringInvoiceUIState: + RecurringInvoiceUIState(sortFields[EntityType.recurringInvoice]), + webhookUIState: WebhookUIState(sortFields[EntityType.webhook]), + tokenUIState: TokenUIState(sortFields[EntityType.token]), + paymentTermUIState: + PaymentTermUIState(sortFields[EntityType.paymentTerm]), + designUIState: DesignUIState(sortFields[EntityType.design]), + creditUIState: CreditUIState(sortFields[EntityType.credit]), + userUIState: UserUIState(sortFields[EntityType.user]), + taxRateUIState: TaxRateUIState(sortFields[EntityType.taxRate]), + companyGatewayUIState: + CompanyGatewayUIState(sortFields[EntityType.companyGateway]), + groupUIState: GroupUIState(sortFields[EntityType.group]), + documentUIState: DocumentUIState(sortFields[EntityType.document]), + expenseUIState: ExpenseUIState(sortFields[EntityType.expense]), + vendorUIState: VendorUIState(sortFields[EntityType.vendor]), + taskUIState: TaskUIState(sortFields[EntityType.task]), + projectUIState: ProjectUIState(sortFields[EntityType.project]), + paymentUIState: PaymentUIState(sortFields[EntityType.payment]), + quoteUIState: QuoteUIState(sortFields[EntityType.quote]), + // STARTER: constructor - do not remove comment ); } diff --git a/lib/redux/user/user_state.dart b/lib/redux/user/user_state.dart index f5fec1b84..8027333e5 100644 --- a/lib/redux/user/user_state.dart +++ b/lib/redux/user/user_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/user_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'user_state.g.dart'; @@ -41,9 +42,10 @@ abstract class UserState implements Built { abstract class UserUIState extends Object with EntityUIState implements Built { - factory UserUIState() { + factory UserUIState(PrefStateSortField sortField) { return _$UserUIState._( - listUIState: ListUIState(UserFields.firstName), + listUIState: ListUIState(sortField.field ?? UserFields.firstName, + sortAscending: sortField?.ascending), editing: UserEntity(), selectedId: '', tabIndex: 0, diff --git a/lib/redux/vendor/vendor_state.dart b/lib/redux/vendor/vendor_state.dart index 65d6d10a9..91651c81d 100644 --- a/lib/redux/vendor/vendor_state.dart +++ b/lib/redux/vendor/vendor_state.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/vendor_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'vendor_state.g.dart'; @@ -54,9 +55,10 @@ abstract class VendorState implements Built { abstract class VendorUIState extends Object with EntityUIState implements Built { - factory VendorUIState() { + factory VendorUIState(PrefStateSortField sortField) { return _$VendorUIState._( - listUIState: ListUIState(VendorFields.number, sortAscending: false), + listUIState: ListUIState(sortField.field ?? VendorFields.name, + sortAscending: sortField?.ascending), editing: VendorEntity(), editingContact: VendorContactEntity(), selectedId: '', diff --git a/lib/redux/webhook/webhook_state.dart b/lib/redux/webhook/webhook_state.dart index abce7f8db..791adaff3 100644 --- a/lib/redux/webhook/webhook_state.dart +++ b/lib/redux/webhook/webhook_state.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/webhook_model.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; part 'webhook_state.g.dart'; @@ -46,9 +47,10 @@ abstract class WebhookState abstract class WebhookUIState extends Object with EntityUIState implements Built { - factory WebhookUIState() { + factory WebhookUIState(PrefStateSortField sortField) { return _$WebhookUIState._( - listUIState: ListUIState(WebhookFields.targetUrl), + listUIState: ListUIState(sortField.field ?? WebhookFields.targetUrl, + sortAscending: sortField?.ascending), editing: WebhookEntity(), selectedId: '', tabIndex: 0, diff --git a/stubs/redux/stub/stub_state b/stubs/redux/stub/stub_state index 14d8765ab..f9507fb15 100644 --- a/stubs/redux/stub/stub_state +++ b/stubs/redux/stub/stub_state @@ -52,9 +52,9 @@ abstract class StubState implements Built { abstract class StubUIState extends Object with EntityUIState implements Built { - factory StubUIState() { + factory StubUIState(PrefStateSortField sortField) { return _$StubUIState._( - listUIState: ListUIState(StubFields.name), + listUIState: ListUIState(sortField?.field ?? StubFields.name, sortAscending: sortField?.ascending), editing: StubEntity(), selectedId: '', tabIndex: 0,