Persist table sorting

This commit is contained in:
Hillel Coren 2021-06-29 20:31:06 +03:00
parent d8fe1c4573
commit 14f55b0bbb
28 changed files with 136 additions and 78 deletions

View File

@ -107,7 +107,8 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
List<int>.generate(kMaxNumberOfCompanies, (i) => i + 1) List<int>.generate(kMaxNumberOfCompanies, (i) => i + 1)
.map((index) => UserCompanyState(reportErrors)) .map((index) => UserCompanyState(reportErrors))
.toList()), .toList()),
uiState: UIState(currentRoute: currentRoute), uiState: UIState(
currentRoute: currentRoute, sortFields: prefState?.sortFields),
prefState: prefState ?? PrefState(), prefState: prefState ?? PrefState(),
); );
} }

View File

@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart';
import 'package:invoiceninja_flutter/data/models/models.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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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'; part 'client_state.g.dart';
@ -53,9 +54,10 @@ abstract class ClientState implements Built<ClientState, ClientStateBuilder> {
abstract class ClientUIState extends Object abstract class ClientUIState extends Object
with EntityUIState with EntityUIState
implements Built<ClientUIState, ClientUIStateBuilder> { implements Built<ClientUIState, ClientUIStateBuilder> {
factory ClientUIState() { factory ClientUIState(PrefStateSortField sortField) {
return _$ClientUIState._( return _$ClientUIState._(
listUIState: ListUIState(ClientFields.name), listUIState: ListUIState(sortField.field ?? ClientFields.name,
sortAscending: sortField?.ascending),
editing: ClientEntity(), editing: ClientEntity(),
editingContact: ContactEntity(), editingContact: ContactEntity(),
saveCompleter: null, saveCompleter: null,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'company_gateway_state.g.dart'; part 'company_gateway_state.g.dart';
@ -43,9 +44,10 @@ abstract class CompanyGatewayState
abstract class CompanyGatewayUIState extends Object abstract class CompanyGatewayUIState extends Object
with EntityUIState with EntityUIState
implements Built<CompanyGatewayUIState, CompanyGatewayUIStateBuilder> { implements Built<CompanyGatewayUIState, CompanyGatewayUIStateBuilder> {
factory CompanyGatewayUIState() { factory CompanyGatewayUIState(PrefStateSortField sortField) {
return _$CompanyGatewayUIState._( return _$CompanyGatewayUIState._(
listUIState: ListUIState(CompanyGatewayFields.name), listUIState: ListUIState(sortField.field ?? CompanyGatewayFields.name,
sortAscending: sortField?.ascending),
editing: CompanyGatewayEntity(), editing: CompanyGatewayEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'credit_state.g.dart'; part 'credit_state.g.dart';
@ -53,9 +54,10 @@ abstract class CreditState implements Built<CreditState, CreditStateBuilder> {
abstract class CreditUIState extends Object abstract class CreditUIState extends Object
with EntityUIState with EntityUIState
implements Built<CreditUIState, CreditUIStateBuilder> { implements Built<CreditUIState, CreditUIStateBuilder> {
factory CreditUIState() { factory CreditUIState(PrefStateSortField sortField) {
return _$CreditUIState._( return _$CreditUIState._(
listUIState: ListUIState(CreditFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? CreditFields.number,
sortAscending: sortField?.ascending ?? false),
editing: InvoiceEntity(), editing: InvoiceEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'design_state.g.dart'; part 'design_state.g.dart';
@ -55,9 +56,10 @@ abstract class DesignState implements Built<DesignState, DesignStateBuilder> {
abstract class DesignUIState extends Object abstract class DesignUIState extends Object
with EntityUIState with EntityUIState
implements Built<DesignUIState, DesignUIStateBuilder> { implements Built<DesignUIState, DesignUIStateBuilder> {
factory DesignUIState() { factory DesignUIState(PrefStateSortField sortField) {
return _$DesignUIState._( return _$DesignUIState._(
listUIState: ListUIState(DesignFields.name), listUIState: ListUIState(sortField.field ?? DesignFields.name,
sortAscending: sortField?.ascending),
editing: DesignEntity(), editing: DesignEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'document_state.g.dart'; part 'document_state.g.dart';
@ -35,9 +36,10 @@ abstract class DocumentState
abstract class DocumentUIState extends Object abstract class DocumentUIState extends Object
with EntityUIState with EntityUIState
implements Built<DocumentUIState, DocumentUIStateBuilder> { implements Built<DocumentUIState, DocumentUIStateBuilder> {
factory DocumentUIState() { factory DocumentUIState(PrefStateSortField sortField) {
return _$DocumentUIState._( return _$DocumentUIState._(
listUIState: ListUIState(DocumentFields.name), listUIState: ListUIState(sortField.field ?? DocumentFields.name,
sortAscending: sortField?.ascending),
editing: DocumentEntity(), editing: DocumentEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/expense_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'expense_state.g.dart'; part 'expense_state.g.dart';
@ -55,9 +56,10 @@ abstract class ExpenseState
abstract class ExpenseUIState extends Object abstract class ExpenseUIState extends Object
with EntityUIState with EntityUIState
implements Built<ExpenseUIState, ExpenseUIStateBuilder> { implements Built<ExpenseUIState, ExpenseUIStateBuilder> {
factory ExpenseUIState() { factory ExpenseUIState(PrefStateSortField sortField) {
return _$ExpenseUIState._( return _$ExpenseUIState._(
listUIState: ListUIState(ExpenseFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? ExpenseFields.number,
sortAscending: sortField?.ascending ?? false),
editing: ExpenseEntity(), editing: ExpenseEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'expense_category_state.g.dart'; part 'expense_category_state.g.dart';
@ -55,9 +56,10 @@ abstract class ExpenseCategoryState
abstract class ExpenseCategoryUIState extends Object abstract class ExpenseCategoryUIState extends Object
with EntityUIState with EntityUIState
implements Built<ExpenseCategoryUIState, ExpenseCategoryUIStateBuilder> { implements Built<ExpenseCategoryUIState, ExpenseCategoryUIStateBuilder> {
factory ExpenseCategoryUIState() { factory ExpenseCategoryUIState(PrefStateSortField sortField) {
return _$ExpenseCategoryUIState._( return _$ExpenseCategoryUIState._(
listUIState: ListUIState(ExpenseCategoryFields.name), listUIState: ListUIState(sortField.field ?? ExpenseCategoryFields.name,
sortAscending: sortField?.ascending),
editing: ExpenseCategoryEntity(), editing: ExpenseCategoryEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'group_state.g.dart'; part 'group_state.g.dart';
@ -41,9 +42,10 @@ abstract class GroupState implements Built<GroupState, GroupStateBuilder> {
abstract class GroupUIState extends Object abstract class GroupUIState extends Object
with EntityUIState with EntityUIState
implements Built<GroupUIState, GroupUIStateBuilder> { implements Built<GroupUIState, GroupUIStateBuilder> {
factory GroupUIState() { factory GroupUIState(PrefStateSortField sortField) {
return _$GroupUIState._( return _$GroupUIState._(
listUIState: ListUIState(GroupFields.name), listUIState: ListUIState(sortField.field ?? GroupFields.name,
sortAscending: sortField?.ascending),
editing: GroupEntity(), editing: GroupEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'invoice_state.g.dart'; part 'invoice_state.g.dart';
@ -54,9 +55,10 @@ abstract class InvoiceState
abstract class InvoiceUIState extends Object abstract class InvoiceUIState extends Object
with EntityUIState with EntityUIState
implements Built<InvoiceUIState, InvoiceUIStateBuilder> { implements Built<InvoiceUIState, InvoiceUIStateBuilder> {
factory InvoiceUIState() { factory InvoiceUIState(PrefStateSortField sortField) {
return _$InvoiceUIState._( return _$InvoiceUIState._(
listUIState: ListUIState(InvoiceFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? InvoiceFields.number,
sortAscending: sortField?.ascending ?? false),
editing: InvoiceEntity(), editing: InvoiceEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/payment_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'payment_state.g.dart'; part 'payment_state.g.dart';
@ -55,9 +56,10 @@ abstract class PaymentState
abstract class PaymentUIState extends Object abstract class PaymentUIState extends Object
with EntityUIState with EntityUIState
implements Built<PaymentUIState, PaymentUIStateBuilder> { implements Built<PaymentUIState, PaymentUIStateBuilder> {
factory PaymentUIState() { factory PaymentUIState(PrefStateSortField sortField) {
return _$PaymentUIState._( return _$PaymentUIState._(
listUIState: ListUIState(PaymentFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? PaymentFields.number,
sortAscending: sortField?.ascending ?? false),
editing: PaymentEntity(), editing: PaymentEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'payment_term_state.g.dart'; part 'payment_term_state.g.dart';
@ -47,9 +48,10 @@ abstract class PaymentTermState
abstract class PaymentTermUIState extends Object abstract class PaymentTermUIState extends Object
with EntityUIState with EntityUIState
implements Built<PaymentTermUIState, PaymentTermUIStateBuilder> { implements Built<PaymentTermUIState, PaymentTermUIStateBuilder> {
factory PaymentTermUIState() { factory PaymentTermUIState(PrefStateSortField sortField) {
return _$PaymentTermUIState._( return _$PaymentTermUIState._(
listUIState: ListUIState(PaymentTermFields.name), listUIState: ListUIState(sortField.field ?? PaymentTermFields.name,
sortAscending: sortField?.ascending),
editing: PaymentTermEntity(), editing: PaymentTermEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -6,6 +6,7 @@ import 'package:built_value/serializer.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'product_state.g.dart'; part 'product_state.g.dart';
@ -54,9 +55,10 @@ abstract class ProductState
abstract class ProductUIState extends Object abstract class ProductUIState extends Object
with EntityUIState with EntityUIState
implements Built<ProductUIState, ProductUIStateBuilder> { implements Built<ProductUIState, ProductUIStateBuilder> {
factory ProductUIState() { factory ProductUIState(PrefStateSortField sortField) {
return _$ProductUIState._( return _$ProductUIState._(
listUIState: ListUIState(ProductFields.productKey), listUIState: ListUIState(sortField.field ?? ProductFields.productKey,
sortAscending: sortField?.ascending),
editing: ProductEntity(), editing: ProductEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/project_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'project_state.g.dart'; part 'project_state.g.dart';
@ -55,9 +56,10 @@ abstract class ProjectState
abstract class ProjectUIState extends Object abstract class ProjectUIState extends Object
with EntityUIState with EntityUIState
implements Built<ProjectUIState, ProjectUIStateBuilder> { implements Built<ProjectUIState, ProjectUIStateBuilder> {
factory ProjectUIState() { factory ProjectUIState(PrefStateSortField sortField) {
return _$ProjectUIState._( return _$ProjectUIState._(
listUIState: ListUIState(ProjectFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? ProjectFields.number,
sortAscending: sortField?.ascending ?? false),
editing: ProjectEntity(), editing: ProjectEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/quote_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'quote_state.g.dart'; part 'quote_state.g.dart';
@ -55,9 +56,10 @@ abstract class QuoteState implements Built<QuoteState, QuoteStateBuilder> {
abstract class QuoteUIState extends Object abstract class QuoteUIState extends Object
with EntityUIState with EntityUIState
implements Built<QuoteUIState, QuoteUIStateBuilder> { implements Built<QuoteUIState, QuoteUIStateBuilder> {
factory QuoteUIState() { factory QuoteUIState(PrefStateSortField sortField) {
return _$QuoteUIState._( return _$QuoteUIState._(
listUIState: ListUIState(QuoteFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? QuoteFields.number,
sortAscending: sortField?.ascending ?? false),
editing: InvoiceEntity(), editing: InvoiceEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -3,9 +3,11 @@ import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart'; import 'package:built_value/serializer.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja_flutter/data/models/invoice_model.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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'recurring_invoice_state.g.dart'; part 'recurring_invoice_state.g.dart';
@ -56,9 +58,10 @@ abstract class RecurringInvoiceState
abstract class RecurringInvoiceUIState extends Object abstract class RecurringInvoiceUIState extends Object
with EntityUIState with EntityUIState
implements Built<RecurringInvoiceUIState, RecurringInvoiceUIStateBuilder> { implements Built<RecurringInvoiceUIState, RecurringInvoiceUIStateBuilder> {
factory RecurringInvoiceUIState() { factory RecurringInvoiceUIState(PrefStateSortField sortField) {
return _$RecurringInvoiceUIState._( return _$RecurringInvoiceUIState._(
listUIState: ListUIState(InvoiceFields.number), listUIState: ListUIState(sortField.field ?? RecurringInvoiceFields.number,
sortAscending: sortField?.ascending ?? false),
editing: InvoiceEntity(), editing: InvoiceEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'subscription_state.g.dart'; part 'subscription_state.g.dart';
@ -55,9 +56,10 @@ abstract class SubscriptionState
abstract class SubscriptionUIState extends Object abstract class SubscriptionUIState extends Object
with EntityUIState with EntityUIState
implements Built<SubscriptionUIState, SubscriptionUIStateBuilder> { implements Built<SubscriptionUIState, SubscriptionUIStateBuilder> {
factory SubscriptionUIState() { factory SubscriptionUIState(PrefStateSortField sortField) {
return _$SubscriptionUIState._( return _$SubscriptionUIState._(
listUIState: ListUIState(SubscriptionFields.createdAt), listUIState: ListUIState(sortField.field ?? SubscriptionFields.createdAt,
sortAscending: sortField?.ascending),
editing: SubscriptionEntity(), editing: SubscriptionEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/task_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'task_state.g.dart'; part 'task_state.g.dart';
@ -54,9 +55,10 @@ abstract class TaskState implements Built<TaskState, TaskStateBuilder> {
abstract class TaskUIState extends Object abstract class TaskUIState extends Object
with EntityUIState with EntityUIState
implements Built<TaskUIState, TaskUIStateBuilder> { implements Built<TaskUIState, TaskUIStateBuilder> {
factory TaskUIState() { factory TaskUIState(PrefStateSortField sortField) {
return _$TaskUIState._( return _$TaskUIState._(
listUIState: ListUIState(TaskFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? TaskFields.number,
sortAscending: sortField?.ascending ?? false),
editing: TaskEntity(), editing: TaskEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'task_status_state.g.dart'; part 'task_status_state.g.dart';
@ -55,9 +56,10 @@ abstract class TaskStatusState
abstract class TaskStatusUIState extends Object abstract class TaskStatusUIState extends Object
with EntityUIState with EntityUIState
implements Built<TaskStatusUIState, TaskStatusUIStateBuilder> { implements Built<TaskStatusUIState, TaskStatusUIStateBuilder> {
factory TaskStatusUIState() { factory TaskStatusUIState(PrefStateSortField sortField) {
return _$TaskStatusUIState._( return _$TaskStatusUIState._(
listUIState: ListUIState(TaskStatusFields.order), listUIState: ListUIState(sortField.field ?? TaskStatusFields.order,
sortAscending: sortField?.ascending),
editing: TaskStatusEntity(), editing: TaskStatusEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'tax_rate_state.g.dart'; part 'tax_rate_state.g.dart';
@ -34,9 +35,10 @@ abstract class TaxRateState
abstract class TaxRateUIState extends Object abstract class TaxRateUIState extends Object
with EntityUIState with EntityUIState
implements Built<TaxRateUIState, TaxRateUIStateBuilder> { implements Built<TaxRateUIState, TaxRateUIStateBuilder> {
factory TaxRateUIState() { factory TaxRateUIState(PrefStateSortField sortField) {
return _$TaxRateUIState._( return _$TaxRateUIState._(
listUIState: ListUIState(TaxRateFields.name), listUIState: ListUIState(sortField.field ?? TaxRateFields.name,
sortAscending: sortField?.ascending),
editing: TaxRateEntity(), editing: TaxRateEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'token_state.g.dart'; part 'token_state.g.dart';
@ -45,9 +46,10 @@ abstract class TokenState implements Built<TokenState, TokenStateBuilder> {
abstract class TokenUIState extends Object abstract class TokenUIState extends Object
with EntityUIState with EntityUIState
implements Built<TokenUIState, TokenUIStateBuilder> { implements Built<TokenUIState, TokenUIStateBuilder> {
factory TokenUIState() { factory TokenUIState(PrefStateSortField sortField) {
return _$TokenUIState._( return _$TokenUIState._(
listUIState: ListUIState(TokenFields.name), listUIState: ListUIState(sortField.field ?? TokenFields.name,
sortAscending: sortField?.ascending),
editing: TokenEntity(), editing: TokenEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -74,7 +74,8 @@ BuiltMap<EntityType, PrefStateSortField> _resortFields(
BuiltMap<EntityType, PrefStateSortField> value, BuiltMap<EntityType, PrefStateSortField> value,
EntityType entityType, EntityType entityType,
String field) { String field) {
final sortField = value[entityType] ?? PrefStateSortField(field); final sortField =
value[entityType] ?? PrefStateSortField(field, field != 'number');
final directon = sortField.rebuild((b) => b final directon = sortField.rebuild((b) => b
..ascending = sortField.field != field || !sortField.ascending ..ascending = sortField.field != field || !sortField.ascending
..field = field); ..field = field);

View File

@ -131,10 +131,10 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
abstract class PrefStateSortField abstract class PrefStateSortField
implements Built<PrefStateSortField, PrefStateSortFieldBuilder> { implements Built<PrefStateSortField, PrefStateSortFieldBuilder> {
factory PrefStateSortField(String field) { factory PrefStateSortField(String field, bool ascending) {
return _$PrefStateSortField._( return _$PrefStateSortField._(
field: field ?? '', field: field,
ascending: true, ascending: ascending,
); );
} }

View File

@ -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/invoice/invoice_state.dart';
import 'package:invoiceninja_flutter/redux/product/product_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/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/ui/auth/login_vm.dart';
import 'package:invoiceninja_flutter/redux/document/document_state.dart'; import 'package:invoiceninja_flutter/redux/document/document_state.dart';
import 'package:invoiceninja_flutter/redux/expense/expense_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'; part 'ui_state.g.dart';
abstract class UIState implements Built<UIState, UIStateBuilder> { abstract class UIState implements Built<UIState, UIStateBuilder> {
factory UIState({String currentRoute}) { factory UIState({
String currentRoute,
BuiltMap<EntityType, PrefStateSortField> sortFields,
}) {
return _$UIState._( return _$UIState._(
selectedCompanyIndex: 0, selectedCompanyIndex: 0,
filterClearedAt: 0, filterClearedAt: 0,
@ -48,32 +52,37 @@ abstract class UIState implements Built<UIState, UIStateBuilder> {
previousRoute: '', previousRoute: '',
previewStack: BuiltList<EntityType>(), previewStack: BuiltList<EntityType>(),
dashboardUIState: DashboardUIState(), 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(), settingsUIState: SettingsUIState(),
reportsUIState: ReportsUIState(), 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
); );
} }

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'user_state.g.dart'; part 'user_state.g.dart';
@ -41,9 +42,10 @@ abstract class UserState implements Built<UserState, UserStateBuilder> {
abstract class UserUIState extends Object abstract class UserUIState extends Object
with EntityUIState with EntityUIState
implements Built<UserUIState, UserUIStateBuilder> { implements Built<UserUIState, UserUIStateBuilder> {
factory UserUIState() { factory UserUIState(PrefStateSortField sortField) {
return _$UserUIState._( return _$UserUIState._(
listUIState: ListUIState(UserFields.firstName), listUIState: ListUIState(sortField.field ?? UserFields.firstName,
sortAscending: sortField?.ascending),
editing: UserEntity(), editing: UserEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -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/data/models/vendor_model.dart';
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.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/list_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'vendor_state.g.dart'; part 'vendor_state.g.dart';
@ -54,9 +55,10 @@ abstract class VendorState implements Built<VendorState, VendorStateBuilder> {
abstract class VendorUIState extends Object abstract class VendorUIState extends Object
with EntityUIState with EntityUIState
implements Built<VendorUIState, VendorUIStateBuilder> { implements Built<VendorUIState, VendorUIStateBuilder> {
factory VendorUIState() { factory VendorUIState(PrefStateSortField sortField) {
return _$VendorUIState._( return _$VendorUIState._(
listUIState: ListUIState(VendorFields.number, sortAscending: false), listUIState: ListUIState(sortField.field ?? VendorFields.name,
sortAscending: sortField?.ascending),
editing: VendorEntity(), editing: VendorEntity(),
editingContact: VendorContactEntity(), editingContact: VendorContactEntity(),
selectedId: '', selectedId: '',

View File

@ -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/entity_ui_state.dart';
import 'package:invoiceninja_flutter/redux/ui/list_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/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
part 'webhook_state.g.dart'; part 'webhook_state.g.dart';
@ -46,9 +47,10 @@ abstract class WebhookState
abstract class WebhookUIState extends Object abstract class WebhookUIState extends Object
with EntityUIState with EntityUIState
implements Built<WebhookUIState, WebhookUIStateBuilder> { implements Built<WebhookUIState, WebhookUIStateBuilder> {
factory WebhookUIState() { factory WebhookUIState(PrefStateSortField sortField) {
return _$WebhookUIState._( return _$WebhookUIState._(
listUIState: ListUIState(WebhookFields.targetUrl), listUIState: ListUIState(sortField.field ?? WebhookFields.targetUrl,
sortAscending: sortField?.ascending),
editing: WebhookEntity(), editing: WebhookEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,

View File

@ -52,9 +52,9 @@ abstract class StubState implements Built<StubState, StubStateBuilder> {
abstract class StubUIState extends Object with EntityUIState implements Built<StubUIState, StubUIStateBuilder> { abstract class StubUIState extends Object with EntityUIState implements Built<StubUIState, StubUIStateBuilder> {
factory StubUIState() { factory StubUIState(PrefStateSortField sortField) {
return _$StubUIState._( return _$StubUIState._(
listUIState: ListUIState(StubFields.name), listUIState: ListUIState(sortField?.field ?? StubFields.name, sortAscending: sortField?.ascending),
editing: StubEntity(), editing: StubEntity(),
selectedId: '', selectedId: '',
tabIndex: 0, tabIndex: 0,