From 6db3ab4b9de42caf4fbe05280c448b36ff85e09a Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 23 Sep 2022 15:42:03 +0300 Subject: [PATCH] Transactions --- lib/data/models/bank_account_model.dart | 8 ++++++-- lib/data/models/product_model.dart | 5 +---- lib/redux/app/app_actions.dart | 9 +++++++++ .../bank_account/bank_account_actions.dart | 7 +++++-- .../bank_account/bank_account_middleware.dart | 17 +++++++++++++++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/lib/data/models/bank_account_model.dart b/lib/data/models/bank_account_model.dart index 5a262f0da..857771aa6 100644 --- a/lib/data/models/bank_account_model.dart +++ b/lib/data/models/bank_account_model.dart @@ -103,7 +103,6 @@ abstract class BankAccountEntity extends Object return name; } - /* @override List getActions( {UserCompanyEntity userCompany, @@ -112,9 +111,14 @@ abstract class BankAccountEntity extends Object bool multiselect = false}) { final actions = []; + if (!isDeleted) { + if (!multiselect && includeEdit && userCompany.canEditEntity(this)) { + actions.add(EntityAction.edit); + } + } + return actions..addAll(super.getActions(userCompany: userCompany)); } - */ int compareTo( BankAccountEntity bankAccount, String sortField, bool sortAscending) { diff --git a/lib/data/models/product_model.dart b/lib/data/models/product_model.dart index 61396f33c..3499adfcb 100644 --- a/lib/data/models/product_model.dart +++ b/lib/data/models/product_model.dart @@ -320,10 +320,7 @@ abstract class ProductEntity extends Object final actions = []; if (!isDeleted) { - if (!multiselect && - !multiselect && - includeEdit && - userCompany.canEditEntity(this)) { + if (!multiselect && includeEdit && userCompany.canEditEntity(this)) { actions.add(EntityAction.edit); } diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index 50fcc1c44..5677ee483 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -8,6 +8,7 @@ import 'package:flutter/material.dart'; import 'package:built_collection/built_collection.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/ui/bank_account/bank_account_screen.dart'; +import 'package:invoiceninja_flutter/ui/bank_account/edit/bank_account_edit.dart'; import 'package:redux/redux.dart'; // Project imports: @@ -952,6 +953,14 @@ void createEntityByType({ ), )); break; + case EntityType.bankAccount: + store.dispatch(EditBankAccount( + force: force, + bankAccount: BankAccountEntity(state: state), + )); + break; + default: + print('## Create by type not handled for $entityType'); } }); } diff --git a/lib/redux/bank_account/bank_account_actions.dart b/lib/redux/bank_account/bank_account_actions.dart index 2749641fe..90edbf59d 100644 --- a/lib/redux/bank_account/bank_account_actions.dart +++ b/lib/redux/bank_account/bank_account_actions.dart @@ -26,8 +26,11 @@ class ViewBankAccount implements PersistUI, PersistPrefs { } class EditBankAccount implements PersistUI, PersistPrefs { - EditBankAccount( - {@required this.bankAccount, this.completer, this.force = false}); + EditBankAccount({ + @required this.bankAccount, + this.completer, + this.force = false, + }); final BankAccountEntity bankAccount; final Completer completer; diff --git a/lib/redux/bank_account/bank_account_middleware.dart b/lib/redux/bank_account/bank_account_middleware.dart index 944272899..577ab35f3 100644 --- a/lib/redux/bank_account/bank_account_middleware.dart +++ b/lib/redux/bank_account/bank_account_middleware.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; +import 'package:invoiceninja_flutter/ui/bank_account/edit/bank_account_edit_vm.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; @@ -16,6 +17,7 @@ List> createStoreBankAccountsMiddleware([ ]) { final viewBankAccountList = _viewBankAccountList(); final viewBankAccount = _viewBankAccount(); + final editBankAccount = _editBankAccount(); final loadBankAccounts = _loadBankAccounts(repository); final loadBankAccount = _loadBankAccount(repository); final saveBankAccount = _saveBankAccount(repository); @@ -26,6 +28,7 @@ List> createStoreBankAccountsMiddleware([ return [ TypedMiddleware(viewBankAccountList), TypedMiddleware(viewBankAccount), + TypedMiddleware(editBankAccount), TypedMiddleware(loadBankAccounts), TypedMiddleware(loadBankAccount), TypedMiddleware(saveBankAccount), @@ -35,6 +38,20 @@ List> createStoreBankAccountsMiddleware([ ]; } +Middleware _editBankAccount() { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as EditBankAccount; + + next(action); + + store.dispatch(UpdateCurrentRoute(BankAccountEditScreen.route)); + + if (store.state.prefState.isMobile) { + navigatorKey.currentState.pushNamed(BankAccountEditScreen.route); + } + }; +} + Middleware _viewBankAccount() { return (Store store, dynamic dynamicAction, NextDispatcher next) async {