From acc11c91e1caedd4c0ef8eaa09602c4750428b60 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 18 Sep 2023 18:19:14 +0300 Subject: [PATCH] Null safety --- lib/redux/app/app_actions.dart | 45 +++--- .../bank_account/bank_account_actions.dart | 6 +- lib/redux/client/client_actions.dart | 10 +- .../company_gateway_actions.dart | 2 +- lib/redux/credit/credit_actions.dart | 18 +-- lib/redux/credit/credit_reducer.dart | 11 +- lib/redux/design/design_actions.dart | 2 +- lib/redux/document/document_actions.dart | 2 +- lib/redux/document/document_middleware.dart | 2 +- lib/redux/expense/expense_actions.dart | 5 +- .../expense_category_actions.dart | 2 +- lib/redux/group/group_actions.dart | 2 +- lib/redux/invoice/invoice_actions.dart | 14 +- lib/redux/invoice/invoice_reducer.dart | 2 + lib/redux/payment/payment_actions.dart | 2 +- .../payment_term/payment_term_actions.dart | 6 +- lib/redux/product/product_actions.dart | 4 +- lib/redux/product/product_reducer.dart | 2 + lib/redux/project/project_actions.dart | 6 +- .../purchase_order_actions.dart | 14 +- .../purchase_order_reducer.dart | 14 +- lib/redux/quote/quote_actions.dart | 18 +-- lib/redux/quote/quote_reducer.dart | 8 +- .../recurring_expense_actions.dart | 7 +- .../recurring_invoice_actions.dart | 22 +-- .../recurring_invoice_reducer.dart | 2 + lib/redux/schedule/schedule_actions.dart | 2 +- lib/redux/settings/settings_actions.dart | 2 +- .../subscription/subscription_actions.dart | 6 +- lib/redux/task/task_actions.dart | 2 +- lib/redux/task/task_selectors.dart | 2 +- .../task_status/task_status_actions.dart | 6 +- lib/redux/tax_rate/tax_rate_actions.dart | 2 +- lib/redux/token/token_actions.dart | 2 +- .../transaction/transaction_actions.dart | 6 +- .../transaction_rule_actions.dart | 5 +- lib/redux/ui/pref_reducer.dart | 9 +- lib/redux/ui/ui_reducer.dart | 134 +++++++++++++----- lib/redux/user/user_actions.dart | 6 +- lib/redux/vendor/vendor_actions.dart | 2 +- lib/redux/webhook/webhook_actions.dart | 2 +- lib/ui/invoice/edit/invoice_edit_details.dart | 10 +- 42 files changed, 266 insertions(+), 160 deletions(-) diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index fb3a9d7b6..fc3577b11 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -316,7 +316,7 @@ class FilterByEntity implements PersistUI { class FilterCompany implements PersistUI { FilterCompany(this.filter); - final String filter; + final String? filter; } void filterByEntity({ @@ -556,8 +556,8 @@ void viewEntityById({ store.dispatch(ToggleViewerLayout(entityType)); final filterEntity = store.state.getEntityMap(entityType)![entityId] as BaseEntity; - final entityTypes = filterEntity.entityType!.relatedTypes - .where((entityType) => state.company!.isModuleEnabled(entityType)); + final entityTypes = filterEntity.entityType!.relatedTypes.where( + (entityType) => state.company!.isModuleEnabled(entityType)); if (entityTypes.isNotEmpty) { viewEntitiesByType( entityType: entityTypes.first, filterEntity: filterEntity); @@ -1325,14 +1325,17 @@ void editEntity({ )); break; case EntityType.project: - store.dispatch(EditProject(project: entity as ProjectEntity, completer: completer)); + store.dispatch(EditProject( + project: entity as ProjectEntity, completer: completer)); break; case EntityType.taxRate: - store.dispatch(EditTaxRate(taxRate: entity as TaxRateEntity, completer: completer)); + store.dispatch(EditTaxRate( + taxRate: entity as TaxRateEntity, completer: completer)); break; case EntityType.companyGateway: store.dispatch(EditCompanyGateway( - companyGateway: entity as CompanyGatewayEntity, completer: completer)); + companyGateway: entity as CompanyGatewayEntity, + completer: completer)); break; case EntityType.invoice: final invoice = entity as InvoiceEntity; @@ -1372,7 +1375,8 @@ void editEntity({ )); break; case EntityType.product: - store.dispatch(EditProduct(product: entity as ProductEntity, completer: completer)); + store.dispatch(EditProduct( + product: entity as ProductEntity, completer: completer)); break; case EntityType.task: if (!state.company!.invoiceTaskLock || @@ -1385,7 +1389,8 @@ void editEntity({ break; case EntityType.expense: store.dispatch( - EditExpense(expense: entity as ExpenseEntity, completer: completer), + EditExpense( + expense: entity as ExpenseEntity, completer: completer), ); break; case EntityType.payment: @@ -1402,32 +1407,36 @@ void editEntity({ break; // STARTER: edit - do not remove comment case EntityType.schedule: - store - .dispatch(EditSchedule(schedule: entity as ScheduleEntity, completer: completer)); + store.dispatch(EditSchedule( + schedule: entity as ScheduleEntity, completer: completer)); break; case EntityType.transactionRule: store.dispatch(EditTransactionRule( - transactionRule: entity as TransactionRuleEntity, completer: completer)); + transactionRule: entity as TransactionRuleEntity, + completer: completer)); break; case EntityType.transaction: - store.dispatch( - EditTransaction(transaction: entity as TransactionEntity, completer: completer)); + store.dispatch(EditTransaction( + transaction: entity as TransactionEntity, + completer: completer)); break; case EntityType.purchaseOrder: - store.dispatch( - EditPurchaseOrder(purchaseOrder: entity as InvoiceEntity, completer: completer)); + store.dispatch(EditPurchaseOrder( + purchaseOrder: entity as InvoiceEntity, completer: completer)); break; case EntityType.recurringExpense: store.dispatch(EditRecurringExpense( - recurringExpense: entity as ExpenseEntity, completer: completer)); + recurringExpense: entity as ExpenseEntity, + completer: completer)); break; case EntityType.subscription: - store.dispatch( - EditSubscription(subscription: entity as SubscriptionEntity, completer: completer)); + store.dispatch(EditSubscription( + subscription: entity as SubscriptionEntity, + completer: completer)); break; case EntityType.taskStatus: store.dispatch(EditTaskStatus( diff --git a/lib/redux/bank_account/bank_account_actions.dart b/lib/redux/bank_account/bank_account_actions.dart index 0eb25aa23..027e9b782 100644 --- a/lib/redux/bank_account/bank_account_actions.dart +++ b/lib/redux/bank_account/bank_account_actions.dart @@ -196,7 +196,7 @@ class RestoreBankAccountsFailure implements StopSaving { class FilterBankAccounts implements PersistUI { FilterBankAccounts(this.filter); - final String filter; + final String? filter; } class SortBankAccounts implements PersistUI, PersistPrefs { @@ -261,8 +261,8 @@ class UpdateBankAccountTab implements PersistUI { final int? tabIndex; } -void handleBankAccountAction( - BuildContext? context, List bankAccounts, EntityAction? action) { +void handleBankAccountAction(BuildContext? context, + List bankAccounts, EntityAction? action) { if (bankAccounts.isEmpty) { return; } diff --git a/lib/redux/client/client_actions.dart b/lib/redux/client/client_actions.dart index c78eb4a6c..f6b279aeb 100644 --- a/lib/redux/client/client_actions.dart +++ b/lib/redux/client/client_actions.dart @@ -304,7 +304,7 @@ class RestoreClientFailure implements StopSaving { class FilterClients implements PersistUI { FilterClients(this.filter); - final String filter; + final String? filter; } class SortClients implements PersistUI, PersistPrefs { @@ -343,8 +343,8 @@ class FilterClientsByCustom4 implements PersistUI { final String value; } -void handleClientAction( - BuildContext? context, List clients, EntityAction? action) async { +void handleClientAction(BuildContext? context, List clients, + EntityAction? action) async { if (clients.isEmpty) { return; } @@ -385,8 +385,8 @@ void handleClientAction( case EntityAction.newTask: createEntity( context: context, - entity: - TaskEntity(state: state).rebuild((b) => b..clientId = client!.id)); + entity: TaskEntity(state: state) + .rebuild((b) => b..clientId = client!.id)); break; case EntityAction.newInvoice: createEntity( diff --git a/lib/redux/company_gateway/company_gateway_actions.dart b/lib/redux/company_gateway/company_gateway_actions.dart index 175791879..da4a61895 100644 --- a/lib/redux/company_gateway/company_gateway_actions.dart +++ b/lib/redux/company_gateway/company_gateway_actions.dart @@ -224,7 +224,7 @@ class RestoreCompanyGatewayFailure implements StopSaving { class FilterCompanyGateways implements PersistUI { FilterCompanyGateways(this.filter); - final String filter; + final String? filter; } class SortCompanyGateways implements PersistUI, PersistPrefs { diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index f38b3c72b..478005729 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -393,7 +393,7 @@ class RestoreCreditsFailure implements StopSaving { class FilterCredits implements PersistUI { FilterCredits(this.filter); - final String filter; + final String? filter; } class SortCredits implements PersistUI, PersistPrefs { @@ -417,7 +417,7 @@ class FilterCreditsByStatus implements PersistUI { class FilterCreditDropdown { FilterCreditDropdown(this.filter); - final String filter; + final String? filter; } class FilterCreditsByCustom1 implements PersistUI { @@ -470,8 +470,8 @@ class SaveCreditDocumentFailure implements StopSaving { final Object error; } -Future handleCreditAction( - BuildContext context, List credits, EntityAction? action) async { +Future handleCreditAction(BuildContext context, List credits, + EntityAction? action) async { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); @@ -631,7 +631,8 @@ Future handleCreditAction( entity: PaymentEntity(state: state, client: client).rebuild((b) => b ..typeId = kPaymentTypeCredit ..credits.addAll(credits - .map((credit) => PaymentableEntity.fromCredit(credit as InvoiceEntity)) + .map((credit) => + PaymentableEntity.fromCredit(credit as InvoiceEntity)) .toList())), filterEntity: client, ); @@ -687,8 +688,8 @@ Future handleCreditAction( final invitation = credit.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response? response = - await (WebClient().get(url, '', rawResponse: true) as FutureOr); + final http.Response? response = await (WebClient() + .get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; @@ -698,7 +699,8 @@ Future handleCreditAction( final data = json.encode( {'ids': creditIds, 'action': EntityAction.bulkPrint.toApiParam()}); final http.Response? response = await (WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); + .post(url, state.credentials.token, data: data, rawResponse: true) + as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; diff --git a/lib/redux/credit/credit_reducer.dart b/lib/redux/credit/credit_reducer.dart index bd6042cd7..7051b1b87 100644 --- a/lib/redux/credit/credit_reducer.dart +++ b/lib/redux/credit/credit_reducer.dart @@ -54,6 +54,7 @@ final editingItemReducer = combineReducers([ TypedReducer((index, action) => action.creditItemIndex), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer(filtercreditDropdownReducer), ]); @@ -62,6 +63,7 @@ String filtercreditDropdownReducer( String dropdownFilter, FilterCreditDropdown action) { return action.filter; } +*/ Reducer selectedIdReducer = combineReducers([ TypedReducer((completer, action) => ''), @@ -73,7 +75,8 @@ Reducer selectedIdReducer = combineReducers([ (selectedId, action) => action.credit.id), TypedReducer( (selectedId, action) => action.credit!.id), - TypedReducer((selectedId, action) => action.credit!.id), + TypedReducer( + (selectedId, action) => action.credit!.id), TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), TypedReducer((selectedId, action) => ''), @@ -165,14 +168,16 @@ InvoiceEntity _addCreditItems(InvoiceEntity? credit, AddCreditItems action) { return credit!.rebuild((b) => b..lineItems.addAll(action.creditItems)); } -InvoiceEntity? _removeCreditItem(InvoiceEntity? credit, DeleteCreditItem action) { +InvoiceEntity? _removeCreditItem( + InvoiceEntity? credit, DeleteCreditItem action) { if (credit!.lineItems.length <= action.index) { return credit; } return credit.rebuild((b) => b..lineItems.removeAt(action.index)); } -InvoiceEntity? _updateCreditItem(InvoiceEntity? credit, UpdateCreditItem action) { +InvoiceEntity? _updateCreditItem( + InvoiceEntity? credit, UpdateCreditItem action) { if (credit!.lineItems.length <= action.index!) { return credit; } diff --git a/lib/redux/design/design_actions.dart b/lib/redux/design/design_actions.dart index a230429a1..22f085ce7 100644 --- a/lib/redux/design/design_actions.dart +++ b/lib/redux/design/design_actions.dart @@ -206,7 +206,7 @@ class RestoreDesignsFailure implements StopSaving { class FilterDesigns implements PersistUI { FilterDesigns(this.filter); - final String filter; + final String? filter; } class SortDesigns implements PersistUI, PersistPrefs { diff --git a/lib/redux/document/document_actions.dart b/lib/redux/document/document_actions.dart index 8e8eb3394..174cbe4cf 100644 --- a/lib/redux/document/document_actions.dart +++ b/lib/redux/document/document_actions.dart @@ -269,7 +269,7 @@ class RestoreDocumentFailure implements StopSaving { class FilterDocuments implements PersistUI { FilterDocuments(this.filter); - final String filter; + final String? filter; } class FilterDocumentsByStatus implements PersistUI { diff --git a/lib/redux/document/document_middleware.dart b/lib/redux/document/document_middleware.dart index ca6e2face..3e33916d3 100644 --- a/lib/redux/document/document_middleware.dart +++ b/lib/redux/document/document_middleware.dart @@ -260,7 +260,7 @@ Middleware _loadDocumentData(DocumentRepository repository) { final action = dynamicAction as LoadDocumentData; final state = store.state; - final document = state.documentState.map[action.documentId]; + final document = state.documentState.map[action.documentId]!; store.dispatch(LoadDocumentRequest()); repository.loadData(store.state.credentials, document).then((bodyBytes) { diff --git a/lib/redux/expense/expense_actions.dart b/lib/redux/expense/expense_actions.dart index b21e1b6cd..c5beb984a 100644 --- a/lib/redux/expense/expense_actions.dart +++ b/lib/redux/expense/expense_actions.dart @@ -210,7 +210,7 @@ class RestoreExpenseFailure implements StopSaving { class FilterExpenses implements PersistUI { FilterExpenses(this.filter); - final String filter; + final String? filter; } class SortExpenses implements PersistUI, PersistPrefs { @@ -299,7 +299,8 @@ void handleExpenseAction( } if (expense.projectId!.isNotEmpty) { if (projectId!.isEmpty && - state.projectState.get(expense.projectId!)!.clientId == client!.id) { + state.projectState.get(expense.projectId!)!.clientId == + client!.id) { projectId = expense.projectId; } } diff --git a/lib/redux/expense_category/expense_category_actions.dart b/lib/redux/expense_category/expense_category_actions.dart index b4939b286..5e710bd71 100644 --- a/lib/redux/expense_category/expense_category_actions.dart +++ b/lib/redux/expense_category/expense_category_actions.dart @@ -206,7 +206,7 @@ class RestoreExpenseCategoriesFailure implements StopSaving { class FilterExpenseCategories implements PersistUI { FilterExpenseCategories(this.filter); - final String filter; + final String? filter; } class SortExpenseCategories implements PersistUI, PersistPrefs { diff --git a/lib/redux/group/group_actions.dart b/lib/redux/group/group_actions.dart index 9e14227dd..8795f6694 100644 --- a/lib/redux/group/group_actions.dart +++ b/lib/redux/group/group_actions.dart @@ -203,7 +203,7 @@ class RestoreGroupFailure implements StopSaving { class FilterGroups implements PersistUI { FilterGroups(this.filter); - final String filter; + final String? filter; } class SortGroups implements PersistUI, PersistPrefs { diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index 52917d886..430eed6cf 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -436,7 +436,7 @@ class RestoreInvoicesFailure implements StopSaving { class FilterInvoices implements PersistUI { FilterInvoices(this.filter); - final String filter; + final String? filter; } class SortInvoices implements PersistUI, PersistPrefs { @@ -460,7 +460,7 @@ class FilterInvoicesByStatus implements PersistUI { class FilterInvoiceDropdown { FilterInvoiceDropdown(this.filter); - final String filter; + final String? filter; } class FilterInvoicesByCustom1 implements PersistUI { @@ -782,7 +782,8 @@ void handleInvoiceAction(BuildContext? context, List invoices, entity: PaymentEntity(state: state, client: client).rebuild((b) => b ..invoices.addAll(invoices .where((invoice) => !(invoice as InvoiceEntity).isPaid) - .map((invoice) => PaymentableEntity.fromInvoice(invoice as InvoiceEntity)) + .map((invoice) => + PaymentableEntity.fromInvoice(invoice as InvoiceEntity)) .toList())), filterEntity: client, ); @@ -841,8 +842,8 @@ void handleInvoiceAction(BuildContext? context, List invoices, final invitation = invoice.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response? response = - await (WebClient().get(url, '', rawResponse: true) as FutureOr); + final http.Response? response = await (WebClient() + .get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; @@ -852,7 +853,8 @@ void handleInvoiceAction(BuildContext? context, List invoices, final data = json.encode( {'ids': invoiceIds, 'action': EntityAction.bulkPrint.toApiParam()}); final http.Response? response = await (WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); + .post(url, state.credentials.token, data: data, rawResponse: true) + as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; diff --git a/lib/redux/invoice/invoice_reducer.dart b/lib/redux/invoice/invoice_reducer.dart index 6f0310379..3fb98aebb 100644 --- a/lib/redux/invoice/invoice_reducer.dart +++ b/lib/redux/invoice/invoice_reducer.dart @@ -57,6 +57,7 @@ final editingItemIndexReducer = combineReducers([ (index, action) => action.invoiceItemIndex), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer(filterInvoiceDropdownReducer), ]); @@ -65,6 +66,7 @@ String filterInvoiceDropdownReducer( String dropdownFilter, FilterInvoiceDropdown action) { return action.filter; } +*/ Reducer selectedIdReducer = combineReducers([ TypedReducer((completer, action) => ''), diff --git a/lib/redux/payment/payment_actions.dart b/lib/redux/payment/payment_actions.dart index 85a9ea537..b2bcca296 100644 --- a/lib/redux/payment/payment_actions.dart +++ b/lib/redux/payment/payment_actions.dart @@ -254,7 +254,7 @@ class EmailPaymentFailure implements StopSaving { class FilterPayments implements PersistUI { FilterPayments(this.filter); - final String filter; + final String? filter; } class SortPayments implements PersistUI, PersistPrefs { diff --git a/lib/redux/payment_term/payment_term_actions.dart b/lib/redux/payment_term/payment_term_actions.dart index 5eb4ed9b3..26241d146 100644 --- a/lib/redux/payment_term/payment_term_actions.dart +++ b/lib/redux/payment_term/payment_term_actions.dart @@ -207,7 +207,7 @@ class RestorePaymentTermsFailure implements StopSaving { class FilterPaymentTerms implements PersistUI { FilterPaymentTerms(this.filter); - final String filter; + final String? filter; } class SortPaymentTerms implements PersistUI, PersistPrefs { @@ -246,8 +246,8 @@ class FilterPaymentTermsByCustom4 implements PersistUI { final String value; } -void handlePaymentTermAction( - BuildContext? context, List paymentTerms, EntityAction? action) { +void handlePaymentTermAction(BuildContext? context, + List paymentTerms, EntityAction? action) { if (paymentTerms.isEmpty) { return; } diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 88c989a24..67a4183b1 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -221,7 +221,7 @@ class SetTaxCategoryProductsFailure implements StopSaving { class FilterProducts implements PersistUI { FilterProducts(this.filter); - final String filter; + final String? filter; } class SortProducts implements PersistUI, PersistPrefs { @@ -263,7 +263,7 @@ class FilterProductsByCustom4 implements PersistUI { class FilterProductDropdown { FilterProductDropdown(this.filter); - final String filter; + final String? filter; } void handleProductAction( diff --git a/lib/redux/product/product_reducer.dart b/lib/redux/product/product_reducer.dart index 52617a109..ebab7ea28 100644 --- a/lib/redux/product/product_reducer.dart +++ b/lib/redux/product/product_reducer.dart @@ -41,6 +41,7 @@ final int? Function(int, dynamic) tabIndexReducer = combineReducers([ }), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer(filterProductDropdownReducer), ]); @@ -49,6 +50,7 @@ String filterProductDropdownReducer( String dropdownFilter, FilterProductDropdown action) { return action.filter; } +*/ final editingReducer = combineReducers([ TypedReducer(_updateEditing), diff --git a/lib/redux/project/project_actions.dart b/lib/redux/project/project_actions.dart index c7eec204e..297984c3f 100644 --- a/lib/redux/project/project_actions.dart +++ b/lib/redux/project/project_actions.dart @@ -213,7 +213,7 @@ class RestoreProjectFailure implements StopSaving { class FilterProjects implements PersistUI { FilterProjects(this.filter); - final String filter; + final String? filter; } class SortProjects implements PersistUI, PersistPrefs { @@ -301,8 +301,8 @@ void handleProjectAction( final items = []; projects.forEach((project) { - items.addAll( - convertProjectToInvoiceItem(project: project as ProjectEntity?, context: context)); + items.addAll(convertProjectToInvoiceItem( + project: project as ProjectEntity?, context: context)); }); createEntity( context: context, diff --git a/lib/redux/purchase_order/purchase_order_actions.dart b/lib/redux/purchase_order/purchase_order_actions.dart index 53b68a14c..21336afb1 100644 --- a/lib/redux/purchase_order/purchase_order_actions.dart +++ b/lib/redux/purchase_order/purchase_order_actions.dart @@ -503,7 +503,7 @@ class DeletePurchaseOrderItem implements PersistUI { class FilterPurchaseOrders implements PersistUI { FilterPurchaseOrders(this.filter); - final String filter; + final String? filter; } class SortPurchaseOrders implements PersistUI, PersistPrefs { @@ -527,7 +527,7 @@ class FilterPurchaseOrdersByStatus implements PersistUI { class FilterPurchaseOrderDropdown { FilterPurchaseOrderDropdown(this.filter); - final String filter; + final String? filter; } class FilterPurchaseOrdersByCustom1 implements PersistUI { @@ -620,8 +620,8 @@ void handlePurchaseOrderAction(BuildContext? context, final invitation = purchaseOrder!.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response? response = - await (WebClient().get(url, '', rawResponse: true) as FutureOr); + final http.Response? response = await (WebClient() + .get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; @@ -633,7 +633,8 @@ void handlePurchaseOrderAction(BuildContext? context, 'action': EntityAction.bulkPrint.toApiParam() }); final http.Response? response = await (WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); + .post(url, state.credentials.token, data: data, rawResponse: true) + as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; @@ -728,7 +729,8 @@ void handlePurchaseOrderAction(BuildContext? context, onPressed: () { Navigator.of(context).pop(); editEntity( - entity: state.vendorState.get(purchaseOrder!.vendorId)!); + entity: + state.vendorState.get(purchaseOrder!.vendorId)!); }, child: Text(localization.editVendor.toUpperCase())) ]); diff --git a/lib/redux/purchase_order/purchase_order_reducer.dart b/lib/redux/purchase_order/purchase_order_reducer.dart index e6e7a035e..3a6be2972 100644 --- a/lib/redux/purchase_order/purchase_order_reducer.dart +++ b/lib/redux/purchase_order/purchase_order_reducer.dart @@ -27,7 +27,8 @@ EntityUIState purchaseOrderUIReducer( final forceSelectedReducer = combineReducers([ TypedReducer((completer, action) => true), TypedReducer((completer, action) => false), - TypedReducer((completer, action) => false), + TypedReducer( + (completer, action) => false), TypedReducer( (completer, action) => false), TypedReducer((completer, action) => false), @@ -58,9 +59,11 @@ final historyActivityIdReducer = combineReducers([ final editingItemReducer = combineReducers([ TypedReducer( (index, action) => action.purchaseOrderItemIndex), - TypedReducer((index, action) => action.itemIndex), + TypedReducer( + (index, action) => action.itemIndex), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer( filterpurchaseOrderDropdownReducer), @@ -70,9 +73,11 @@ String filterpurchaseOrderDropdownReducer( String dropdownFilter, FilterPurchaseOrderDropdown action) { return action.filter; } +*/ Reducer selectedIdReducer = combineReducers([ - TypedReducer((completer, action) => ''), + TypedReducer( + (completer, action) => ''), TypedReducer((completer, action) => ''), TypedReducer((selectedId, action) => action.entityType == EntityType.purchaseOrder @@ -91,7 +96,8 @@ Reducer selectedIdReducer = combineReducers([ TypedReducer((selectedId, action) => ''), TypedReducer((selectedId, action) => ''), TypedReducer((selectedId, action) => ''), - TypedReducer((selectedId, action) => ''), + TypedReducer( + (selectedId, action) => ''), TypedReducer( (selectedId, action) => ''), TypedReducer( diff --git a/lib/redux/quote/quote_actions.dart b/lib/redux/quote/quote_actions.dart index a4ded18b2..985167e89 100644 --- a/lib/redux/quote/quote_actions.dart +++ b/lib/redux/quote/quote_actions.dart @@ -379,7 +379,7 @@ class RestoreQuotesFailure implements StopSaving { class FilterQuotes implements PersistUI { FilterQuotes(this.filter); - final String filter; + final String? filter; } class SortQuotes implements PersistUI, PersistPrefs { @@ -403,7 +403,7 @@ class FilterQuotesByStatus implements PersistUI { class FilterQuoteDropdown { FilterQuoteDropdown(this.filter); - final String filter; + final String? filter; } class FilterQuotesByCustom1 implements PersistUI { @@ -513,8 +513,8 @@ class SaveQuoteDocumentFailure implements StopSaving { final Object error; } -Future handleQuoteAction( - BuildContext context, List quotes, EntityAction? action) async { +Future handleQuoteAction(BuildContext context, List quotes, + EntityAction? action) async { final store = StoreProvider.of(context); final state = store.state; final localization = AppLocalization.of(context); @@ -561,7 +561,8 @@ Future handleQuoteAction( ApproveQuotes(snackBarCompleter(context, message), quoteIds)); break; case EntityAction.viewInvoice: - viewEntityById(entityId: quote!.invoiceId, entityType: EntityType.invoice); + viewEntityById( + entityId: quote!.invoiceId, entityType: EntityType.invoice); break; case EntityAction.markSent: store.dispatch(MarkSentQuotesRequest( @@ -740,8 +741,8 @@ Future handleQuoteAction( final invitation = quote!.invitations.first; final url = invitation.downloadLink; store.dispatch(StartSaving()); - final http.Response? response = - await (WebClient().get(url, '', rawResponse: true) as FutureOr); + final http.Response? response = await (WebClient() + .get(url, '', rawResponse: true) as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; @@ -751,7 +752,8 @@ Future handleQuoteAction( final data = json.encode( {'ids': quoteIds, 'action': EntityAction.bulkPrint.toApiParam()}); final http.Response? response = await (WebClient() - .post(url, state.credentials.token, data: data, rawResponse: true) as FutureOr); + .post(url, state.credentials.token, data: data, rawResponse: true) + as FutureOr); store.dispatch(StopSaving()); await Printing.layoutPdf(onLayout: (_) => response!.bodyBytes); break; diff --git a/lib/redux/quote/quote_reducer.dart b/lib/redux/quote/quote_reducer.dart index d2e4cc9f1..2beaef399 100644 --- a/lib/redux/quote/quote_reducer.dart +++ b/lib/redux/quote/quote_reducer.dart @@ -56,6 +56,7 @@ final editingItemReducer = combineReducers([ TypedReducer((index, action) => action.quoteItemIndex), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer(filterquoteDropdownReducer), ]); @@ -64,6 +65,7 @@ String filterquoteDropdownReducer( String dropdownFilter, FilterQuoteDropdown action) { return action.filter; } +*/ Reducer selectedIdReducer = combineReducers([ TypedReducer((completer, action) => ''), @@ -73,7 +75,8 @@ Reducer selectedIdReducer = combineReducers([ TypedReducer((selectedId, action) => action.quoteId), TypedReducer( (selectedId, action) => action.quote.id), - TypedReducer((selectedId, action) => action.quote!.id), + TypedReducer( + (selectedId, action) => action.quote!.id), TypedReducer((selectedId, action) => action.quote!.id), TypedReducer( (selectedId, action) => action.clearSelection ? '' : selectedId), @@ -293,7 +296,8 @@ ListUIState _addToListMultiselect( ListUIState _removeFromListMultiselect( ListUIState quoteListState, RemoveFromQuoteMultiselect action) { - return quoteListState.rebuild((b) => b..selectedIds.remove(action.entity!.id)); + return quoteListState + .rebuild((b) => b..selectedIds.remove(action.entity!.id)); } ListUIState _clearListMultiselect( diff --git a/lib/redux/recurring_expense/recurring_expense_actions.dart b/lib/redux/recurring_expense/recurring_expense_actions.dart index e26d35d1f..3745f2967 100644 --- a/lib/redux/recurring_expense/recurring_expense_actions.dart +++ b/lib/redux/recurring_expense/recurring_expense_actions.dart @@ -217,7 +217,7 @@ class RestoreRecurringExpensesFailure implements StopSaving { class FilterRecurringExpenses implements PersistUI { FilterRecurringExpenses(this.filter); - final String filter; + final String? filter; } class SortRecurringExpenses implements PersistUI, PersistPrefs { @@ -364,8 +364,9 @@ void handleRecurringExpenseAction(BuildContext? context, final store = StoreProvider.of(context!); final localization = AppLocalization.of(context); final recurringExpense = recurringExpenses.first as ExpenseEntity?; - final recurringExpenseIds = - recurringExpenses.map((recurringExpense) => recurringExpense!.id).toList(); + final recurringExpenseIds = recurringExpenses + .map((recurringExpense) => recurringExpense!.id) + .toList(); switch (action) { case EntityAction.edit: diff --git a/lib/redux/recurring_invoice/recurring_invoice_actions.dart b/lib/redux/recurring_invoice/recurring_invoice_actions.dart index bdb1d8497..0fe2b833f 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_actions.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_actions.dart @@ -323,12 +323,15 @@ class UpdatePricesRecurringInvoicesFailure implements StopSaving { } class IncreasePricesRecurringInvoicesRequest implements StartSaving { - IncreasePricesRecurringInvoicesRequest( - {this.completer, this.recurringInvoiceIds, this.percentageIncrease}); + IncreasePricesRecurringInvoicesRequest({ + this.completer, + required this.recurringInvoiceIds, + required this.percentageIncrease, + }); final Completer? completer; - final double? percentageIncrease; - final List? recurringInvoiceIds; + final double percentageIncrease; + final List recurringInvoiceIds; } class IncreasePricesRecurringInvoicesSuccess @@ -385,7 +388,7 @@ class RestoreRecurringInvoicesFailure implements StopSaving { class FilterRecurringInvoices implements PersistUI { FilterRecurringInvoices(this.filter); - final String filter; + final String? filter; } class SortRecurringInvoices implements PersistUI, PersistPrefs { @@ -409,7 +412,7 @@ class FilterRecurringInvoicesByStatus implements PersistUI { class FilterRecurringInvoiceDropdown { FilterRecurringInvoiceDropdown(this.filter); - final String filter; + final String? filter; } class FilterRecurringInvoicesByCustom1 implements PersistUI { @@ -513,8 +516,9 @@ void handleRecurringInvoiceAction(BuildContext? context, final state = store.state; final localization = AppLocalization.of(context); final recurringInvoice = recurringInvoices.first as InvoiceEntity; - final recurringInvoiceIds = - recurringInvoices.map((recurringInvoice) => recurringInvoice!.id).toList(); + final recurringInvoiceIds = recurringInvoices + .map((recurringInvoice) => recurringInvoice!.id) + .toList(); final client = state.clientState.get(recurringInvoice.clientId); switch (action) { @@ -563,7 +567,7 @@ void handleRecurringInvoiceAction(BuildContext? context, ); }); - if (amount != 0) { + if (amount != null && amount != 0) { store.dispatch(IncreasePricesRecurringInvoicesRequest( completer: snackBarCompleter( navigatorKey.currentContext!, localization!.updatedPrices), diff --git a/lib/redux/recurring_invoice/recurring_invoice_reducer.dart b/lib/redux/recurring_invoice/recurring_invoice_reducer.dart index be0714e27..b3f2b4bdc 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_reducer.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_reducer.dart @@ -64,6 +64,7 @@ final editingItemIndexReducer = combineReducers([ (index, action) => action.itemIndex), ]); +/* Reducer dropdownFilterReducer = combineReducers([ TypedReducer( filterRecurringInvoiceDropdownReducer), @@ -73,6 +74,7 @@ String filterRecurringInvoiceDropdownReducer( String dropdownFilter, FilterRecurringInvoiceDropdown action) { return action.filter; } +*/ Reducer selectedIdReducer = combineReducers([ TypedReducer( diff --git a/lib/redux/schedule/schedule_actions.dart b/lib/redux/schedule/schedule_actions.dart index f070abf2b..3e0e72929 100644 --- a/lib/redux/schedule/schedule_actions.dart +++ b/lib/redux/schedule/schedule_actions.dart @@ -197,7 +197,7 @@ class RestoreSchedulesFailure implements StopSaving { class FilterSchedules implements PersistUI { FilterSchedules(this.filter); - final String filter; + final String? filter; } class SortSchedules implements PersistUI, PersistPrefs { diff --git a/lib/redux/settings/settings_actions.dart b/lib/redux/settings/settings_actions.dart index 262357937..3a5600934 100644 --- a/lib/redux/settings/settings_actions.dart +++ b/lib/redux/settings/settings_actions.dart @@ -267,7 +267,7 @@ class ConnecGmailUserFailure implements StopSaving { class FilterSettings implements PersistUI { FilterSettings(this.filter); - final String filter; + final String? filter; } class ToggleShowNewSettings {} diff --git a/lib/redux/subscription/subscription_actions.dart b/lib/redux/subscription/subscription_actions.dart index 7bfb064d6..d5ea19671 100644 --- a/lib/redux/subscription/subscription_actions.dart +++ b/lib/redux/subscription/subscription_actions.dart @@ -206,7 +206,7 @@ class RestoreSubscriptionsFailure implements StopSaving { class FilterSubscriptions implements PersistUI { FilterSubscriptions(this.filter); - final String filter; + final String? filter; } class SortSubscriptions implements PersistUI, PersistPrefs { @@ -271,8 +271,8 @@ class UpdateSubscriptionTab implements PersistUI { final int? tabIndex; } -void handleSubscriptionAction( - BuildContext? context, List subscriptions, EntityAction? action) { +void handleSubscriptionAction(BuildContext? context, + List subscriptions, EntityAction? action) { if (subscriptions.isEmpty) { return; } diff --git a/lib/redux/task/task_actions.dart b/lib/redux/task/task_actions.dart index a2963d7c7..f1560c0db 100644 --- a/lib/redux/task/task_actions.dart +++ b/lib/redux/task/task_actions.dart @@ -304,7 +304,7 @@ class SortTasksFailure implements StopSaving { class FilterTasks implements PersistUI { FilterTasks(this.filter); - final String filter; + final String? filter; } class SortTasks implements PersistUI, PersistPrefs { diff --git a/lib/redux/task/task_selectors.dart b/lib/redux/task/task_selectors.dart index aa792a6ac..40ff42869 100644 --- a/lib/redux/task/task_selectors.dart +++ b/lib/redux/task/task_selectors.dart @@ -82,7 +82,7 @@ InvoiceItemEntity convertTaskToInvoiceItem({ final date = formatDate(time.startDate!.toIso8601String(), context, showTime: false); if (dates.containsKey(date)) { - dates[date] += hours; + dates[date] = dates[date]! + hours; } else { dates[date] = hours; } diff --git a/lib/redux/task_status/task_status_actions.dart b/lib/redux/task_status/task_status_actions.dart index 90151beb9..17ed56404 100644 --- a/lib/redux/task_status/task_status_actions.dart +++ b/lib/redux/task_status/task_status_actions.dart @@ -206,7 +206,7 @@ class RestoreTaskStatusesFailure implements StopSaving { class FilterTaskStatuses implements PersistUI { FilterTaskStatuses(this.filter); - final String filter; + final String? filter; } class SortTaskStatuses implements PersistUI, PersistPrefs { @@ -265,8 +265,8 @@ class ClearTaskStatusMultiselect { ClearTaskStatusMultiselect(); } -void handleTaskStatusAction( - BuildContext? context, List taskStatuses, EntityAction? action) { +void handleTaskStatusAction(BuildContext? context, + List taskStatuses, EntityAction? action) { if (taskStatuses.isEmpty) { return; } diff --git a/lib/redux/tax_rate/tax_rate_actions.dart b/lib/redux/tax_rate/tax_rate_actions.dart index 4cbd20e4d..e380ca4fa 100644 --- a/lib/redux/tax_rate/tax_rate_actions.dart +++ b/lib/redux/tax_rate/tax_rate_actions.dart @@ -199,7 +199,7 @@ class RestoreTaxRateFailure implements StopSaving { class FilterTaxRates implements PersistUI { FilterTaxRates(this.filter); - final String filter; + final String? filter; } class SortTaxRates implements PersistUI, PersistPrefs { diff --git a/lib/redux/token/token_actions.dart b/lib/redux/token/token_actions.dart index b66d307de..e0df1ee1c 100644 --- a/lib/redux/token/token_actions.dart +++ b/lib/redux/token/token_actions.dart @@ -219,7 +219,7 @@ class RestoreTokensFailure implements StopSaving { class FilterTokens implements PersistUI { FilterTokens(this.filter); - final String filter; + final String? filter; } class SortTokens implements PersistUI, PersistPrefs { diff --git a/lib/redux/transaction/transaction_actions.dart b/lib/redux/transaction/transaction_actions.dart index 39137edd8..2034d7a18 100644 --- a/lib/redux/transaction/transaction_actions.dart +++ b/lib/redux/transaction/transaction_actions.dart @@ -341,7 +341,7 @@ class ConvertTransactionsFailure implements StopSaving { class FilterTransactions implements PersistUI { FilterTransactions(this.filter); - final String filter; + final String? filter; } class SortTransactions implements PersistUI, PersistPrefs { @@ -412,8 +412,8 @@ class UpdateTransactionTab implements PersistUI { final int? tabIndex; } -void handleTransactionAction( - BuildContext? context, List transactions, EntityAction? action) { +void handleTransactionAction(BuildContext? context, + List transactions, EntityAction? action) { if (transactions.isEmpty) { return; } diff --git a/lib/redux/transaction_rule/transaction_rule_actions.dart b/lib/redux/transaction_rule/transaction_rule_actions.dart index 7bc176f40..e2a00a629 100644 --- a/lib/redux/transaction_rule/transaction_rule_actions.dart +++ b/lib/redux/transaction_rule/transaction_rule_actions.dart @@ -197,7 +197,7 @@ class RestoreTransactionRulesFailure implements StopSaving { class FilterTransactionRules implements PersistUI { FilterTransactionRules(this.filter); - final String filter; + final String? filter; } class SortTransactionRules implements PersistUI, PersistPrefs { @@ -292,7 +292,8 @@ void handleTransactionRuleAction(BuildContext? context, break; case EntityAction.delete: store.dispatch(DeleteTransactionRulesRequest( - snackBarCompleter(context, localization!.deletedTransactionRule), + snackBarCompleter( + context, localization!.deletedTransactionRule), transactionRuleIds)); break; case EntityAction.toggleMultiselect: diff --git a/lib/redux/ui/pref_reducer.dart b/lib/redux/ui/pref_reducer.dart index e71de4f58..a618098e0 100644 --- a/lib/redux/ui/pref_reducer.dart +++ b/lib/redux/ui/pref_reducer.dart @@ -245,11 +245,13 @@ Reducer historyVisibleReducer = combineReducers([ }), ]); +/* Reducer filterReducer = combineReducers([ TypedReducer((filter, action) { return action.filter; }), ]); +*/ Reducer hideDesktopWarningReducer = combineReducers([ TypedReducer((filter, action) { @@ -513,8 +515,8 @@ Reducer selectedCompanyIndexReducer = combineReducers([ CompanyPrefState companyPrefReducer(CompanyPrefState? state, dynamic action) { state ??= CompanyPrefState(); - return state.rebuild( - (b) => b..historyList.replace(historyReducer(state!.historyList, action))); + return state.rebuild((b) => + b..historyList.replace(historyReducer(state!.historyList, action))); } Reducer> historyReducer = combineReducers([ @@ -907,8 +909,7 @@ BuiltList _addToHistory( } } - final old = - list.firstWhereOrNull((item) => item.matchesRecord(record)); + final old = list.firstWhereOrNull((item) => item.matchesRecord(record)); if (old != null) { return list.rebuild((b) => b diff --git a/lib/redux/ui/ui_reducer.dart b/lib/redux/ui/ui_reducer.dart index 38c80e67d..4a0d1d155 100644 --- a/lib/redux/ui/ui_reducer.dart +++ b/lib/redux/ui/ui_reducer.dart @@ -1,19 +1,48 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:invoiceninja_flutter/redux/bank_account/bank_account_state.dart'; import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; +import 'package:invoiceninja_flutter/redux/client/client_state.dart'; +import 'package:invoiceninja_flutter/redux/company_gateway/company_gateway_state.dart'; import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart'; +import 'package:invoiceninja_flutter/redux/credit/credit_state.dart'; +import 'package:invoiceninja_flutter/redux/design/design_state.dart'; +import 'package:invoiceninja_flutter/redux/document/document_state.dart'; import 'package:invoiceninja_flutter/redux/expense/expense_actions.dart'; +import 'package:invoiceninja_flutter/redux/expense/expense_state.dart'; +import 'package:invoiceninja_flutter/redux/expense_category/expense_category_state.dart'; +import 'package:invoiceninja_flutter/redux/group/group_state.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; +import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart'; import 'package:invoiceninja_flutter/redux/payment/payment_actions.dart'; +import 'package:invoiceninja_flutter/redux/payment/payment_state.dart'; +import 'package:invoiceninja_flutter/redux/payment_term/payment_term_state.dart'; import 'package:invoiceninja_flutter/redux/product/product_actions.dart'; +import 'package:invoiceninja_flutter/redux/product/product_state.dart'; import 'package:invoiceninja_flutter/redux/project/project_actions.dart'; +import 'package:invoiceninja_flutter/redux/project/project_state.dart'; import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_actions.dart'; +import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_state.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart'; +import 'package:invoiceninja_flutter/redux/quote/quote_state.dart'; import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_actions.dart'; +import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_state.dart'; import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_actions.dart'; +import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_state.dart'; +import 'package:invoiceninja_flutter/redux/schedule/schedule_state.dart'; +import 'package:invoiceninja_flutter/redux/subscription/subscription_state.dart'; import 'package:invoiceninja_flutter/redux/task/task_actions.dart'; +import 'package:invoiceninja_flutter/redux/task/task_state.dart'; +import 'package:invoiceninja_flutter/redux/task_status/task_status_state.dart'; +import 'package:invoiceninja_flutter/redux/tax_rate/tax_rate_state.dart'; +import 'package:invoiceninja_flutter/redux/token/token_state.dart'; import 'package:invoiceninja_flutter/redux/transaction/transaction_actions.dart'; +import 'package:invoiceninja_flutter/redux/transaction/transaction_state.dart'; +import 'package:invoiceninja_flutter/redux/transaction_rule/transaction_rule_state.dart'; +import 'package:invoiceninja_flutter/redux/user/user_state.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_actions.dart'; +import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart'; +import 'package:invoiceninja_flutter/redux/webhook/webhook_state.dart'; import 'package:redux/redux.dart'; // Project imports: @@ -80,50 +109,79 @@ UIState uiReducer(UIState state, dynamic action) { ..currentRoute = currentRoute ..previewStack.replace(previewStackReducer(state.previewStack, action)) ..filterStack.replace(filterStackReducer(state.filterStack, action)) - ..productUIState.replace(productUIReducer(state.productUIState, action) as ProductUIState) - ..clientUIState.replace(clientUIReducer(state.clientUIState, action) as ClientUIState) - ..invoiceUIState.replace(invoiceUIReducer(state.invoiceUIState, action) as InvoiceUIState) + ..productUIState.replace( + productUIReducer(state.productUIState, action) as ProductUIState) + ..clientUIState + .replace(clientUIReducer(state.clientUIState, action) as ClientUIState) + ..invoiceUIState.replace( + invoiceUIReducer(state.invoiceUIState, action) as InvoiceUIState) ..dashboardUIState .replace(dashboardUIReducer(state.dashboardUIState, action)) ..reportsUIState.replace(reportsUIReducer(state.reportsUIState, action)) // STARTER: reducer - do not remove comment - ..scheduleUIState.replace(scheduleUIReducer(state.scheduleUIState, action) as ScheduleUIState) - ..transactionRuleUIState - .replace(transactionRuleUIReducer(state.transactionRuleUIState, action) as TransactionRuleUIState) - ..transactionUIState - .replace(transactionUIReducer(state.transactionUIState, action) as TransactionUIState) - ..bankAccountUIState - .replace(bankAccountUIReducer(state.bankAccountUIState, action) as BankAccountUIState) - ..purchaseOrderUIState - .replace(purchaseOrderUIReducer(state.purchaseOrderUIState, action) as PurchaseOrderUIState) + ..scheduleUIState.replace( + scheduleUIReducer(state.scheduleUIState, action) as ScheduleUIState) + ..transactionRuleUIState.replace( + transactionRuleUIReducer(state.transactionRuleUIState, action) + as TransactionRuleUIState) + ..transactionUIState.replace( + transactionUIReducer(state.transactionUIState, action) + as TransactionUIState) + ..bankAccountUIState.replace( + bankAccountUIReducer(state.bankAccountUIState, action) + as BankAccountUIState) + ..purchaseOrderUIState.replace( + purchaseOrderUIReducer(state.purchaseOrderUIState, action) + as PurchaseOrderUIState) ..recurringExpenseUIState.replace( - recurringExpenseUIReducer(state.recurringExpenseUIState, action) as RecurringExpenseUIState) - ..subscriptionUIState - .replace(subscriptionUIReducer(state.subscriptionUIState, action) as SubscriptionUIState) - ..taskStatusUIState - .replace(taskStatusUIReducer(state.taskStatusUIState, action) as TaskStatusUIState) - ..expenseCategoryUIState - .replace(expenseCategoryUIReducer(state.expenseCategoryUIState, action) as ExpenseCategoryUIState) + recurringExpenseUIReducer(state.recurringExpenseUIState, action) + as RecurringExpenseUIState) + ..subscriptionUIState.replace( + subscriptionUIReducer(state.subscriptionUIState, action) + as SubscriptionUIState) + ..taskStatusUIState.replace( + taskStatusUIReducer(state.taskStatusUIState, action) + as TaskStatusUIState) + ..expenseCategoryUIState.replace( + expenseCategoryUIReducer(state.expenseCategoryUIState, action) + as ExpenseCategoryUIState) ..recurringInvoiceUIState.replace( - recurringInvoiceUIReducer(state.recurringInvoiceUIState, action) as RecurringInvoiceUIState) - ..webhookUIState.replace(webhookUIReducer(state.webhookUIState, action) as WebhookUIState) - ..tokenUIState.replace(tokenUIReducer(state.tokenUIState, action) as TokenUIState) - ..paymentTermUIState - .replace(paymentTermUIReducer(state.paymentTermUIState, action) as PaymentTermUIState) - ..designUIState.replace(designUIReducer(state.designUIState, action) as DesignUIState) - ..creditUIState.replace(creditUIReducer(state.creditUIState, action) as CreditUIState) - ..userUIState.replace(userUIReducer(state.userUIState, action) as UserUIState) - ..taxRateUIState.replace(taxRateUIReducer(state.taxRateUIState, action) as TaxRateUIState) - ..companyGatewayUIState - .replace(companyGatewayUIReducer(state.companyGatewayUIState, action) as CompanyGatewayUIState) - ..groupUIState.replace(groupUIReducer(state.groupUIState, action) as GroupUIState) - ..documentUIState.replace(documentUIReducer(state.documentUIState, action) as DocumentUIState) - ..expenseUIState.replace(expenseUIReducer(state.expenseUIState, action) as ExpenseUIState) - ..vendorUIState.replace(vendorUIReducer(state.vendorUIState, action) as VendorUIState) - ..taskUIState.replace(taskUIReducer(state.taskUIState, action) as TaskUIState) - ..projectUIState.replace(projectUIReducer(state.projectUIState, action) as ProjectUIState) - ..paymentUIState.replace(paymentUIReducer(state.paymentUIState, action) as PaymentUIState) - ..quoteUIState.replace(quoteUIReducer(state.quoteUIState, action) as QuoteUIState) + recurringInvoiceUIReducer(state.recurringInvoiceUIState, action) + as RecurringInvoiceUIState) + ..webhookUIState.replace( + webhookUIReducer(state.webhookUIState, action) as WebhookUIState) + ..tokenUIState + .replace(tokenUIReducer(state.tokenUIState, action) as TokenUIState) + ..paymentTermUIState.replace( + paymentTermUIReducer(state.paymentTermUIState, action) + as PaymentTermUIState) + ..designUIState + .replace(designUIReducer(state.designUIState, action) as DesignUIState) + ..creditUIState + .replace(creditUIReducer(state.creditUIState, action) as CreditUIState) + ..userUIState + .replace(userUIReducer(state.userUIState, action) as UserUIState) + ..taxRateUIState.replace( + taxRateUIReducer(state.taxRateUIState, action) as TaxRateUIState) + ..companyGatewayUIState.replace( + companyGatewayUIReducer(state.companyGatewayUIState, action) + as CompanyGatewayUIState) + ..groupUIState + .replace(groupUIReducer(state.groupUIState, action) as GroupUIState) + ..documentUIState.replace( + documentUIReducer(state.documentUIState, action) as DocumentUIState) + ..expenseUIState.replace( + expenseUIReducer(state.expenseUIState, action) as ExpenseUIState) + ..vendorUIState + .replace(vendorUIReducer(state.vendorUIState, action) as VendorUIState) + ..taskUIState + .replace(taskUIReducer(state.taskUIState, action) as TaskUIState) + ..projectUIState.replace( + projectUIReducer(state.projectUIState, action) as ProjectUIState) + ..paymentUIState.replace( + paymentUIReducer(state.paymentUIState, action) as PaymentUIState) + ..quoteUIState + .replace(quoteUIReducer(state.quoteUIState, action) as QuoteUIState) ..settingsUIState .replace(settingsUIReducer(state.settingsUIState, action))); } diff --git a/lib/redux/user/user_actions.dart b/lib/redux/user/user_actions.dart index 041dcbab7..f39eec51a 100644 --- a/lib/redux/user/user_actions.dart +++ b/lib/redux/user/user_actions.dart @@ -293,7 +293,7 @@ class ResendInviteFailure implements StopSaving { class FilterUsers { FilterUsers(this.filter); - final String filter; + final String? filter; } class SortUsers implements PersistUI, PersistPrefs { @@ -409,8 +409,8 @@ void handleUserAction( case EntityAction.newTask: createEntity( context: context, - entity: - TaskEntity(state: state).rebuild((b) => b.assignedUserId = user!.id), + entity: TaskEntity(state: state) + .rebuild((b) => b.assignedUserId = user!.id), ); break; case EntityAction.newVendor: diff --git a/lib/redux/vendor/vendor_actions.dart b/lib/redux/vendor/vendor_actions.dart index 1573e2450..26f7d0246 100644 --- a/lib/redux/vendor/vendor_actions.dart +++ b/lib/redux/vendor/vendor_actions.dart @@ -240,7 +240,7 @@ class DeleteVendorContact implements PersistUI { class FilterVendors implements PersistUI { FilterVendors(this.filter); - final String filter; + final String? filter; } class SortVendors implements PersistUI, PersistPrefs { diff --git a/lib/redux/webhook/webhook_actions.dart b/lib/redux/webhook/webhook_actions.dart index f4f03c317..ef26392ff 100644 --- a/lib/redux/webhook/webhook_actions.dart +++ b/lib/redux/webhook/webhook_actions.dart @@ -209,7 +209,7 @@ class RestoreWebhooksFailure implements StopSaving { class FilterWebhooks implements PersistUI { FilterWebhooks(this.filter); - final String filter; + final String? filter; } class SortWebhooks implements PersistUI, PersistPrefs { diff --git a/lib/ui/invoice/edit/invoice_edit_details.dart b/lib/ui/invoice/edit/invoice_edit_details.dart index ed962de9a..9cfb72206 100644 --- a/lib/ui/invoice/edit/invoice_edit_details.dart +++ b/lib/ui/invoice/edit/invoice_edit_details.dart @@ -172,7 +172,8 @@ class InvoiceEditDetailsState extends State { vendorId: invoice.vendorId, vendorState: state.vendorState, onSelected: (vendor) { - viewModel.onVendorChanged!(context, invoice, vendor as VendorEntity); + viewModel.onVendorChanged!( + context, invoice, vendor as VendorEntity); }, onAddPressed: (completer) => viewModel.onAddVendorPressed!(context, completer), @@ -180,8 +181,8 @@ class InvoiceEditDetailsState extends State { : ClientPicker( clientId: invoice.clientId, clientState: state.clientState, - onSelected: (client) => - viewModel.onClientChanged!(context, invoice, client as ClientEntity?), + onSelected: (client) => viewModel.onClientChanged!( + context, invoice, client as ClientEntity?), onAddPressed: (completer) => viewModel.onAddClientPressed!(context, completer), ) @@ -198,7 +199,8 @@ class InvoiceEditDetailsState extends State { validator: (String val) => val.trim().isEmpty && invoice.isOld && originalInvoice!.number.isNotEmpty - ? AppLocalization.of(context)!.pleaseEnterAnInvoiceNumber + ? AppLocalization.of(context)! + .pleaseEnterAnInvoiceNumber : null, ), UserPicker(