diff --git a/lib/redux/app/app_middleware.dart b/lib/redux/app/app_middleware.dart index e9ab70e93..78da05390 100644 --- a/lib/redux/app/app_middleware.dart +++ b/lib/redux/app/app_middleware.dart @@ -149,7 +149,8 @@ Middleware _createLoadState( CompanyState company4State; CompanyState company5State; - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as LoadStateRequest; try { final prefs = await SharedPreferences.getInstance(); final appVersion = prefs.getString(kSharedPrefAppVersion); @@ -284,11 +285,12 @@ Middleware _createUserLoggedIn( PersistenceRepository company4Repository, PersistenceRepository company5Repository, ) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as UserLoginSuccess; + next(action); final state = store.state; - authRepository.saveAuthState(state.authState); uiRepository.saveUIState(state.uiState); staticRepository.saveStaticState(state.staticState); @@ -301,7 +303,9 @@ Middleware _createUserLoggedIn( } Middleware _createPersistUI(PersistenceRepository uiRepository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as PersistUI; + next(action); uiRepository.saveUIState(store.state.uiState); @@ -309,7 +313,8 @@ Middleware _createPersistUI(PersistenceRepository uiRepository) { } Middleware _createAccountLoaded() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as LoadAccountSuccess; final dynamic data = action.loginResponse; store.dispatch(LoadStaticSuccess(data: data.static, version: data.version)); @@ -336,7 +341,9 @@ Middleware _createAccountLoaded() { Middleware _createPersistStatic( PersistenceRepository staticRepository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as PersistStatic; + // first process the action so the data is in the state next(action); @@ -351,8 +358,9 @@ Middleware _createPersistData( PersistenceRepository company4Repository, PersistenceRepository company5Repository, ) { - return (Store store, dynamic action, NextDispatcher next) { - // first process the action so the data is in the state + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as PersistData; + next(action); final AppState state = store.state; @@ -387,7 +395,7 @@ Middleware _createDeleteState( PersistenceRepository company4Repository, PersistenceRepository company5Repository, ) { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { authRepository.delete(); uiRepository.delete(); staticRepository.delete(); @@ -397,6 +405,7 @@ Middleware _createDeleteState( company4Repository.delete(); company5Repository.delete(); + final action = dynamicAction as UserLogout; final SharedPreferences prefs = await SharedPreferences.getInstance(); for (int i = 0; i < 5; i++) { @@ -408,7 +417,9 @@ Middleware _createDeleteState( } Middleware _createViewMainScreen() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewMainScreen; + next(action); store.dispatch(UpdateCurrentRoute(DashboardScreen.route)); diff --git a/lib/redux/auth/auth_middleware.dart b/lib/redux/auth/auth_middleware.dart index 62fd1c3f3..6c15a057e 100644 --- a/lib/redux/auth/auth_middleware.dart +++ b/lib/redux/auth/auth_middleware.dart @@ -26,17 +26,17 @@ List> createStoreAuthMiddleware([ ]; } -void _saveAuthLocal(dynamic action) async { +void _saveAuthLocal({String email, String url, String secret}) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString(kSharedPrefEmail, action.email ?? ''); + prefs.setString(kSharedPrefEmail, email ?? ''); - if (formatApiUrlReadable(action.url) != kAppUrl) { - prefs.setString(kSharedPrefUrl, formatApiUrlMachine(action.url)); - prefs.setString(kSharedPrefSecret, action.secret); + if (formatApiUrlReadable(url) != kAppUrl) { + prefs.setString(kSharedPrefUrl, formatApiUrlMachine(url)); + prefs.setString(kSharedPrefSecret, secret); } } -void _loadAuthLocal(Store store, dynamic action) async { +void _loadAuthLocal(Store store) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); final String email = prefs.getString(kSharedPrefEmail) ?? ''; final String url = formatApiUrlMachine(prefs.getString(kSharedPrefUrl) ?? ''); @@ -55,8 +55,10 @@ void _loadAuthLocal(Store store, dynamic action) async { } Middleware _createLoginInit() { - return (Store store, dynamic action, NextDispatcher next) { - _loadAuthLocal(store, action); + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadUserLogin; + + _loadAuthLocal(store); Navigator.of(action.context).pushReplacementNamed(LoginScreen.route); @@ -65,7 +67,9 @@ Middleware _createLoginInit() { } Middleware _createLoginRequest(AuthRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as UserLoginRequest; + repository .login( email: action.email, @@ -75,7 +79,11 @@ Middleware _createLoginRequest(AuthRepository repository) { platform: action.platform, oneTimePassword: action.oneTimePassword) .then((data) { - _saveAuthLocal(action); + _saveAuthLocal( + email: action.email, + secret: action.secret, + url: action.url, + ); if (_isVersionSupported(data.version)) { store.dispatch(LoadAccountSuccess( @@ -91,7 +99,7 @@ Middleware _createLoginRequest(AuthRepository repository) { message = 'Please check the URL is correct'; } else if (message.toLowerCase().contains('credentials')) { message += ', please confirm your credentials in the web app'; - } else if (message.contains('404')){ + } else if (message.contains('404')) { message += ', you may need to add /public to the URL'; } store.dispatch(UserLoginFailure(message)); @@ -102,7 +110,9 @@ Middleware _createLoginRequest(AuthRepository repository) { } Middleware _createOAuthRequest(AuthRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as OAuthLoginRequest; + repository .oauthLogin( token: action.token, @@ -110,7 +120,11 @@ Middleware _createOAuthRequest(AuthRepository repository) { secret: action.secret, platform: action.platform) .then((data) { - _saveAuthLocal(action); + _saveAuthLocal( + email: action.email, + secret: action.secret, + url: action.url, + ); if (_isVersionSupported(data.version)) { store.dispatch(LoadAccountSuccess( @@ -129,10 +143,13 @@ Middleware _createOAuthRequest(AuthRepository repository) { } Middleware _createRefreshRequest(AuthRepository repository) { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, + NextDispatcher next) async { + final action = dynamicAction as RefreshData; + next(action); - _loadAuthLocal(store, action); + _loadAuthLocal(store); final SharedPreferences prefs = await SharedPreferences.getInstance(); final String url = diff --git a/lib/redux/client/client_middleware.dart b/lib/redux/client/client_middleware.dart index c38d1362d..25f3071ae 100644 --- a/lib/redux/client/client_middleware.dart +++ b/lib/redux/client/client_middleware.dart @@ -39,7 +39,9 @@ List> createStoreClientsMiddleware([ } Middleware _editClient() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditClient; + if (hasChanges(store, action)) { return; } @@ -61,7 +63,9 @@ Middleware _editClient() { } Middleware _viewClient() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewClient; + if (hasChanges(store, action)) { return; } @@ -77,7 +81,9 @@ Middleware _viewClient() { } Middleware _viewClientList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewClientList; + if (hasChanges(store, action)) { return; } @@ -94,7 +100,8 @@ Middleware _viewClientList() { } Middleware _archiveClient(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveClientRequest; final origClient = store.state.clientState.map[action.clientId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -117,7 +124,8 @@ Middleware _archiveClient(ClientRepository repository) { } Middleware _deleteClient(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteClientRequest; final origClient = store.state.clientState.map[action.clientId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -140,7 +148,8 @@ Middleware _deleteClient(ClientRepository repository) { } Middleware _restoreClient(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreClientRequest; final origClient = store.state.clientState.map[action.clientId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -163,7 +172,8 @@ Middleware _restoreClient(ClientRepository repository) { } Middleware _saveClient(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveClientRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.client) @@ -191,7 +201,8 @@ Middleware _saveClient(ClientRepository repository) { } Middleware _loadClient(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadClient; final AppState state = store.state; if (state.isLoading) { @@ -222,8 +233,9 @@ Middleware _loadClient(ClientRepository repository) { } Middleware _loadClients(ClientRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final AppState state = store.state; + final action = dynamicAction as LoadClients; if (!state.clientState.isStale && !action.force) { next(action); diff --git a/lib/redux/client/client_reducer.dart b/lib/redux/client/client_reducer.dart index 68b2ee54a..9d37df1ca 100644 --- a/lib/redux/client/client_reducer.dart +++ b/lib/redux/client/client_reducer.dart @@ -1,5 +1,4 @@ import 'dart:async'; - import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/redux/company/company_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart'; @@ -19,67 +18,72 @@ EntityUIState clientUIReducer(ClientUIState state, dynamic action) { } final saveCompleterReducer = combineReducers>([ - TypedReducer, EditClient>(editClient), + TypedReducer, EditClient>((completer, action) { + return action.completer; + }), ]); -Completer editClient( - Completer completer, dynamic action) { - return action.completer; -} - final editingContactReducer = combineReducers([ - TypedReducer(editContact), - TypedReducer(editContact), + TypedReducer((contact, action) { + return action.contact ?? ContactEntity(); + }), + TypedReducer((contact, action) { + return action.contact ?? ContactEntity(); + }), ]); -ContactEntity editContact(ContactEntity contact, dynamic action) { - return action.contact ?? ContactEntity(); -} - -Reducer selectedIdReducer = combineReducers([ - TypedReducer( - (int selectedId, dynamic action) => action.clientId), - TypedReducer( - (int selectedId, dynamic action) => action.client.id), +final selectedIdReducer = combineReducers([ + TypedReducer((selectedId, action) { + return action.clientId; + }), + TypedReducer((selectedId, action) { + return action.client.id; + }), ]); final editingReducer = combineReducers([ - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_updateEditing), - TypedReducer(_addContact), - TypedReducer(_removeContact), - TypedReducer(_updateContact), - TypedReducer(_clearEditing), - TypedReducer(_clearEditing), - TypedReducer(_clearEditing), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return action.client; + }), + TypedReducer((client, action) { + return client + .rebuild((b) => b..contacts.add(action.contact ?? ContactEntity())); + }), + TypedReducer((client, action) { + return client.rebuild((b) => b..contacts.removeAt(action.index)); + }), + TypedReducer((client, action) { + return client.rebuild((b) => b..contacts[action.index] = action.contact); + }), + TypedReducer((client, action) { + return ClientEntity(); + }), + TypedReducer((client, action) { + return ClientEntity(); + }), + TypedReducer((client, action) { + return ClientEntity(); + }), ]); -ClientEntity _clearEditing(ClientEntity client, dynamic action) { - return ClientEntity(); -} - -ClientEntity _updateEditing(ClientEntity client, dynamic action) { - return action.client; -} - -ClientEntity _addContact(ClientEntity client, AddContact action) { - return client - .rebuild((b) => b..contacts.add(action.contact ?? ContactEntity())); -} - -ClientEntity _removeContact(ClientEntity client, DeleteContact action) { - return client.rebuild((b) => b..contacts.removeAt(action.index)); -} - -ClientEntity _updateContact(ClientEntity client, UpdateContact action) { - return client.rebuild((b) => b..contacts[action.index] = action.contact); -} - final clientListReducer = combineReducers([ TypedReducer(_sortClients), TypedReducer(_filterClientsByState), diff --git a/lib/redux/client/client_state.dart b/lib/redux/client/client_state.dart index c5c2f301f..8ff390f5c 100644 --- a/lib/redux/client/client_state.dart +++ b/lib/redux/client/client_state.dart @@ -58,6 +58,7 @@ abstract class ClientUIState extends Object editingContact: ContactEntity(), selectedId: 0, saveCompleter: null, + cancelCompleter: null, ); } ClientUIState._(); @@ -72,6 +73,10 @@ abstract class ClientUIState extends Object @BuiltValueField(serialize: false) Completer get saveCompleter; + @nullable + @BuiltValueField(serialize: false) + Completer get cancelCompleter; + @override bool get isCreatingNew => editing.isNew; diff --git a/lib/redux/client/client_state.g.dart b/lib/redux/client/client_state.g.dart index 111780b15..696fca2d8 100644 --- a/lib/redux/client/client_state.g.dart +++ b/lib/redux/client/client_state.g.dart @@ -266,6 +266,8 @@ class _$ClientUIState extends ClientUIState { @override final Completer saveCompleter; @override + final Completer cancelCompleter; + @override final int selectedId; @override final ListUIState listUIState; @@ -277,6 +279,7 @@ class _$ClientUIState extends ClientUIState { {this.editing, this.editingContact, this.saveCompleter, + this.cancelCompleter, this.selectedId, this.listUIState}) : super._() { @@ -302,6 +305,7 @@ class _$ClientUIState extends ClientUIState { editing == other.editing && editingContact == other.editingContact && saveCompleter == other.saveCompleter && + cancelCompleter == other.cancelCompleter && selectedId == other.selectedId && listUIState == other.listUIState; } @@ -310,8 +314,10 @@ class _$ClientUIState extends ClientUIState { int get hashCode { return $jf($jc( $jc( - $jc($jc($jc(0, editing.hashCode), editingContact.hashCode), - saveCompleter.hashCode), + $jc( + $jc($jc($jc(0, editing.hashCode), editingContact.hashCode), + saveCompleter.hashCode), + cancelCompleter.hashCode), selectedId.hashCode), listUIState.hashCode)); } @@ -322,6 +328,7 @@ class _$ClientUIState extends ClientUIState { ..add('editing', editing) ..add('editingContact', editingContact) ..add('saveCompleter', saveCompleter) + ..add('cancelCompleter', cancelCompleter) ..add('selectedId', selectedId) ..add('listUIState', listUIState)) .toString(); @@ -348,6 +355,11 @@ class ClientUIStateBuilder set saveCompleter(Completer saveCompleter) => _$this._saveCompleter = saveCompleter; + Completer _cancelCompleter; + Completer get cancelCompleter => _$this._cancelCompleter; + set cancelCompleter(Completer cancelCompleter) => + _$this._cancelCompleter = cancelCompleter; + int _selectedId; int get selectedId => _$this._selectedId; set selectedId(int selectedId) => _$this._selectedId = selectedId; @@ -365,6 +377,7 @@ class ClientUIStateBuilder _editing = _$v.editing?.toBuilder(); _editingContact = _$v.editingContact?.toBuilder(); _saveCompleter = _$v.saveCompleter; + _cancelCompleter = _$v.cancelCompleter; _selectedId = _$v.selectedId; _listUIState = _$v.listUIState?.toBuilder(); _$v = null; @@ -394,6 +407,7 @@ class ClientUIStateBuilder editing: _editing?.build(), editingContact: _editingContact?.build(), saveCompleter: saveCompleter, + cancelCompleter: cancelCompleter, selectedId: selectedId, listUIState: listUIState.build()); } catch (_) { diff --git a/lib/redux/dashboard/dashboard_middleware.dart b/lib/redux/dashboard/dashboard_middleware.dart index 06adb794f..8d1f84277 100644 --- a/lib/redux/dashboard/dashboard_middleware.dart +++ b/lib/redux/dashboard/dashboard_middleware.dart @@ -22,8 +22,9 @@ List> createStoreDashboardMiddleware([ } Middleware _createViewDashboard() { - return (Store store, dynamic action, NextDispatcher next) { - + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewDashboard; + if (hasChanges(store, action)) { return; } @@ -41,7 +42,8 @@ Middleware _createViewDashboard() { } Middleware _createLoadDashboard(DashboardRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadDashboard; final state = store.state; if (!state.dashboardState.isStale && !action.force) { diff --git a/lib/redux/document/document_middleware.dart b/lib/redux/document/document_middleware.dart index 81a704c9f..c321978a4 100644 --- a/lib/redux/document/document_middleware.dart +++ b/lib/redux/document/document_middleware.dart @@ -38,7 +38,9 @@ List> createStoreDocumentsMiddleware([ } Middleware _editDocument() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditDocument; + next(action); store.dispatch(UpdateCurrentRoute(DocumentEditScreen.route)); @@ -52,7 +54,9 @@ Middleware _editDocument() { } Middleware _viewDocument() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewDocument; + next(action); store.dispatch(UpdateCurrentRoute(DocumentViewScreen.route)); @@ -61,7 +65,9 @@ Middleware _viewDocument() { } Middleware _viewDocumentList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewDocumentList; + next(action); store.dispatch(UpdateCurrentRoute(DocumentScreen.route)); @@ -72,7 +78,8 @@ Middleware _viewDocumentList() { } Middleware _archiveDocument(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveDocumentRequest; final origDocument = store.state.documentState.map[action.documentId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -95,7 +102,8 @@ Middleware _archiveDocument(DocumentRepository repository) { } Middleware _deleteDocument(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteDocumentRequest; final origDocument = store.state.documentState.map[action.documentId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -118,7 +126,8 @@ Middleware _deleteDocument(DocumentRepository repository) { } Middleware _restoreDocument(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreDocumentRequest; final origDocument = store.state.documentState.map[action.documentId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -141,7 +150,8 @@ Middleware _restoreDocument(DocumentRepository repository) { } Middleware _saveDocument(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveDocumentRequest; if (store.state.selectedCompany.isEnterprisePlan) { repository .saveData(store.state.selectedCompany, store.state.authState, @@ -169,7 +179,8 @@ Middleware _saveDocument(DocumentRepository repository) { } Middleware _loadDocument(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadDocument; final AppState state = store.state; if (state.isLoading) { @@ -199,7 +210,8 @@ Middleware _loadDocument(DocumentRepository repository) { } Middleware _loadDocuments(DocumentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadDocuments; final AppState state = store.state; if (!state.documentState.isStale && !action.force) { diff --git a/lib/redux/document/document_reducer.dart b/lib/redux/document/document_reducer.dart index e7553f399..ef4a38ef5 100644 --- a/lib/redux/document/document_reducer.dart +++ b/lib/redux/document/document_reducer.dart @@ -15,9 +15,9 @@ EntityUIState documentUIReducer(DocumentUIState state, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.documentId), + (selectedId, action) => action.documentId), TypedReducer( - (int selectedId, dynamic action) => action.document.id), + (selectedId, action) => action.document.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/expense/expense_middleware.dart b/lib/redux/expense/expense_middleware.dart index 4a72b4505..b85d7b24a 100644 --- a/lib/redux/expense/expense_middleware.dart +++ b/lib/redux/expense/expense_middleware.dart @@ -39,7 +39,9 @@ List> createStoreExpensesMiddleware([ } Middleware _editExpense() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditExpense; + next(action); store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route)); @@ -53,7 +55,9 @@ Middleware _editExpense() { } Middleware _viewExpense() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewExpense; + next(action); store.dispatch(UpdateCurrentRoute(ExpenseViewScreen.route)); @@ -62,7 +66,9 @@ Middleware _viewExpense() { } Middleware _viewExpenseList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewExpenseList; + next(action); store.dispatch(UpdateCurrentRoute(ExpenseScreen.route)); @@ -73,7 +79,8 @@ Middleware _viewExpenseList() { } Middleware _archiveExpense(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveExpenseRequest; final origExpense = store.state.expenseState.map[action.expenseId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -96,7 +103,8 @@ Middleware _archiveExpense(ExpenseRepository repository) { } Middleware _deleteExpense(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteExpenseRequest; final origExpense = store.state.expenseState.map[action.expenseId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -119,7 +127,8 @@ Middleware _deleteExpense(ExpenseRepository repository) { } Middleware _restoreExpense(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreExpenseRequest; final origExpense = store.state.expenseState.map[action.expenseId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -142,7 +151,8 @@ Middleware _restoreExpense(ExpenseRepository repository) { } Middleware _saveExpense(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveExpenseRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.expense) @@ -164,7 +174,8 @@ Middleware _saveExpense(ExpenseRepository repository) { } Middleware _loadExpense(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadExpense; final AppState state = store.state; if (state.isLoading) { @@ -194,7 +205,8 @@ Middleware _loadExpense(ExpenseRepository repository) { } Middleware _loadExpenses(ExpenseRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadExpenses; final AppState state = store.state; if (!state.expenseState.isStale && !action.force) { diff --git a/lib/redux/expense/expense_reducer.dart b/lib/redux/expense/expense_reducer.dart index a46fd363f..2cf341042 100644 --- a/lib/redux/expense/expense_reducer.dart +++ b/lib/redux/expense/expense_reducer.dart @@ -15,9 +15,9 @@ EntityUIState expenseUIReducer(ExpenseUIState state, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.expenseId), + (selectedId, action) => action.expenseId), TypedReducer( - (int selectedId, dynamic action) => action.expense.id), + (selectedId, action) => action.expense.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index 464b7ef46..6302dcfea 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -50,7 +50,9 @@ List> createStoreInvoicesMiddleware([ } Middleware _viewInvoiceList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewInvoiceList; + if (hasChanges(store, action)) { return; } @@ -67,7 +69,9 @@ Middleware _viewInvoiceList() { } Middleware _viewInvoice() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewInvoice; + if (hasChanges(store, action)) { return; } @@ -83,7 +87,9 @@ Middleware _viewInvoice() { } Middleware _editInvoice() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditInvoice; + if (hasChanges(store, action)) { return; } @@ -104,7 +110,9 @@ Middleware _editInvoice() { } Middleware _showEmailInvoice() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ShowEmailInvoice; + next(action); final emailWasSent = @@ -117,7 +125,8 @@ Middleware _showEmailInvoice() { } Middleware _archiveInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveInvoiceRequest; final origInvoice = store.state.invoiceState.map[action.invoiceId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -140,7 +149,8 @@ Middleware _archiveInvoice(InvoiceRepository repository) { } Middleware _deleteInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteInvoiceRequest; final origInvoice = store.state.invoiceState.map[action.invoiceId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -164,7 +174,8 @@ Middleware _deleteInvoice(InvoiceRepository repository) { } Middleware _restoreInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreInvoiceRequest; final origInvoice = store.state.invoiceState.map[action.invoiceId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -188,7 +199,8 @@ Middleware _restoreInvoice(InvoiceRepository repository) { } Middleware _markSentInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as MarkSentInvoiceRequest; final origInvoice = store.state.invoiceState.map[action.invoiceId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -212,7 +224,8 @@ Middleware _markSentInvoice(InvoiceRepository repository) { } Middleware _emailInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as EmailInvoiceRequest; final origInvoice = store.state.invoiceState.map[action.invoiceId]; repository .emailInvoice(store.state.selectedCompany, store.state.authState, @@ -236,7 +249,8 @@ Middleware _emailInvoice(InvoiceRepository repository) { } Middleware _saveInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveInvoiceRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.invoice) @@ -266,7 +280,8 @@ Middleware _saveInvoice(InvoiceRepository repository) { } Middleware _loadInvoice(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadInvoice; final AppState state = store.state; if (state.isLoading) { @@ -297,7 +312,8 @@ Middleware _loadInvoice(InvoiceRepository repository) { } Middleware _loadInvoices(InvoiceRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadInvoices; final AppState state = store.state; if (!state.invoiceState.isStale && !action.force) { diff --git a/lib/redux/invoice/invoice_reducer.dart b/lib/redux/invoice/invoice_reducer.dart index 0cfdf38bf..7e1e1bd53 100644 --- a/lib/redux/invoice/invoice_reducer.dart +++ b/lib/redux/invoice/invoice_reducer.dart @@ -36,11 +36,11 @@ String filterClientDropdownReducer( Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.invoiceId), + (selectedId, action) => action.invoiceId), TypedReducer( - (int selectedId, dynamic action) => action.invoice.id), + (selectedId, action) => action.invoice.id), TypedReducer( - (int selectedId, dynamic action) => action.invoice.id), + (selectedId, action) => action.invoice.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/payment/payment_middleware.dart b/lib/redux/payment/payment_middleware.dart index 870a81e70..ca9af551f 100644 --- a/lib/redux/payment/payment_middleware.dart +++ b/lib/redux/payment/payment_middleware.dart @@ -41,7 +41,10 @@ List> createStorePaymentsMiddleware([ } Middleware _editPayment() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, + NextDispatcher next) async { + final action = dynamicAction as EditPayment; + next(action); store.dispatch(UpdateCurrentRoute(PaymentEditScreen.route)); @@ -56,7 +59,8 @@ Middleware _editPayment() { } Middleware _viewPayment() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic action, + NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(PaymentViewScreen.route)); @@ -65,7 +69,9 @@ Middleware _viewPayment() { } Middleware _viewPaymentList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewPaymentList; + next(action); store.dispatch(UpdateCurrentRoute(PaymentScreen.route)); @@ -76,7 +82,8 @@ Middleware _viewPaymentList() { } Middleware _archivePayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchivePaymentRequest; final origPayment = store.state.paymentState.map[action.paymentId]; repository .saveData( @@ -100,7 +107,8 @@ Middleware _archivePayment(PaymentRepository repository) { } Middleware _deletePayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeletePaymentRequest; final origPayment = store.state.paymentState.map[action.paymentId]; repository .saveData( @@ -125,7 +133,8 @@ Middleware _deletePayment(PaymentRepository repository) { } Middleware _restorePayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestorePaymentRequest; final origPayment = store.state.paymentState.map[action.paymentId]; repository .saveData( @@ -150,7 +159,8 @@ Middleware _restorePayment(PaymentRepository repository) { } Middleware _savePayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SavePaymentRequest; final PaymentEntity payment = action.payment; final bool sendEmail = payment.isNew ? store.state.uiState.emailPayment : false; @@ -177,7 +187,8 @@ Middleware _savePayment(PaymentRepository repository) { } Middleware _emailPayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as EmailPaymentRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.payment, @@ -197,7 +208,7 @@ Middleware _emailPayment(PaymentRepository repository) { /* Middleware _loadPayment(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final AppState state = store.state; if (state.isLoading) { @@ -228,7 +239,8 @@ Middleware _loadPayment(PaymentRepository repository) { */ Middleware _loadPayments(PaymentRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadPayments; final AppState state = store.state; if (!state.paymentState.isStale && !action.force) { diff --git a/lib/redux/payment/payment_reducer.dart b/lib/redux/payment/payment_reducer.dart index bbeabe6eb..331a86934 100644 --- a/lib/redux/payment/payment_reducer.dart +++ b/lib/redux/payment/payment_reducer.dart @@ -15,9 +15,9 @@ EntityUIState paymentUIReducer(PaymentUIState state, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.paymentId), + (selectedId, action) => action.paymentId), TypedReducer( - (int selectedId, dynamic action) => action.payment.id), + (selectedId, action) => action.payment.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index 9f97e3c22..d07ee86a9 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -37,7 +37,9 @@ List> createStoreProductsMiddleware([ } Middleware _editProduct() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditProduct; + if (hasChanges(store, action)) { return; } @@ -53,7 +55,9 @@ Middleware _editProduct() { } Middleware _viewProduct() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewProduct; + if (hasChanges(store, action)) { return; } @@ -69,7 +73,9 @@ Middleware _viewProduct() { } Middleware _viewProductList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewProductList; + if (hasChanges(store, action)) { return; } @@ -86,7 +92,8 @@ Middleware _viewProductList() { } Middleware _archiveProduct(ProductRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveProductRequest; final origProduct = store.state.productState.map[action.productId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -109,7 +116,8 @@ Middleware _archiveProduct(ProductRepository repository) { } Middleware _deleteProduct(ProductRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteProductRequest; final origProduct = store.state.productState.map[action.productId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -132,7 +140,8 @@ Middleware _deleteProduct(ProductRepository repository) { } Middleware _restoreProduct(ProductRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreProductRequest; final origProduct = store.state.productState.map[action.productId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -155,7 +164,8 @@ Middleware _restoreProduct(ProductRepository repository) { } Middleware _saveProduct(ProductRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveProductRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.product) @@ -177,7 +187,8 @@ Middleware _saveProduct(ProductRepository repository) { } Middleware _loadProducts(ProductRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadProducts; final AppState state = store.state; if (!state.productState.isStale && !action.force) { diff --git a/lib/redux/product/product_reducer.dart b/lib/redux/product/product_reducer.dart index 30e6061f5..62de5f804 100644 --- a/lib/redux/product/product_reducer.dart +++ b/lib/redux/product/product_reducer.dart @@ -43,9 +43,9 @@ ProductEntity _updateEditing(ProductEntity client, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.productId), + (selectedId, action) => action.productId), TypedReducer( - (int selectedId, dynamic action) => action.product.id), + (selectedId, action) => action.product.id), ]); final productListReducer = combineReducers([ diff --git a/lib/redux/project/project_middleware.dart b/lib/redux/project/project_middleware.dart index f0f82adc7..19c4dcf3c 100644 --- a/lib/redux/project/project_middleware.dart +++ b/lib/redux/project/project_middleware.dart @@ -39,7 +39,9 @@ List> createStoreProjectsMiddleware([ } Middleware _editProject() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditProject; + next(action); if (action.trackRoute) { @@ -56,7 +58,9 @@ Middleware _editProject() { } Middleware _viewProject() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewProject; + next(action); store.dispatch(UpdateCurrentRoute(ProjectViewScreen.route)); @@ -65,7 +69,9 @@ Middleware _viewProject() { } Middleware _viewProjectList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewProjectList; + next(action); store.dispatch(UpdateCurrentRoute(ProjectScreen.route)); @@ -76,7 +82,8 @@ Middleware _viewProjectList() { } Middleware _archiveProject(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveProjectRequest; final origProject = store.state.projectState.map[action.projectId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -99,7 +106,8 @@ Middleware _archiveProject(ProjectRepository repository) { } Middleware _deleteProject(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteProjectRequest; final origProject = store.state.projectState.map[action.projectId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -122,7 +130,8 @@ Middleware _deleteProject(ProjectRepository repository) { } Middleware _restoreProject(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreProjectRequest; final origProject = store.state.projectState.map[action.projectId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -145,7 +154,8 @@ Middleware _restoreProject(ProjectRepository repository) { } Middleware _saveProject(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveProjectRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.project) @@ -167,7 +177,8 @@ Middleware _saveProject(ProjectRepository repository) { } Middleware _loadProject(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadProject; final AppState state = store.state; if (state.isLoading) { @@ -200,7 +211,8 @@ Middleware _loadProject(ProjectRepository repository) { } Middleware _loadProjects(ProjectRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadProjects; final AppState state = store.state; if (!state.projectState.isStale && !action.force) { diff --git a/lib/redux/project/project_reducer.dart b/lib/redux/project/project_reducer.dart index 0a2824c08..65aeefd6f 100644 --- a/lib/redux/project/project_reducer.dart +++ b/lib/redux/project/project_reducer.dart @@ -15,9 +15,9 @@ EntityUIState projectUIReducer(ProjectUIState state, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.projectId), + (selectedId, action) => action.projectId), TypedReducer( - (int selectedId, dynamic action) => action.project.id), + (selectedId, action) => action.project.id), ]); final editingReducer = combineReducers([ @@ -31,7 +31,7 @@ final editingReducer = combineReducers([ TypedReducer(_clearEditing), ]); -ProjectEntity _clearEditing(ProjectEntity project, dynamic action) { +ProjectEntity _clearEditing(ProjectEntity project, dynamic dynamicAction) { return ProjectEntity(); } diff --git a/lib/redux/quote/quote_middleware.dart b/lib/redux/quote/quote_middleware.dart index f2818c662..5368d2a49 100644 --- a/lib/redux/quote/quote_middleware.dart +++ b/lib/redux/quote/quote_middleware.dart @@ -46,7 +46,9 @@ List> createStoreQuotesMiddleware([ } Middleware _viewQuote() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewQuote; + next(action); store.dispatch(UpdateCurrentRoute(QuoteViewScreen.route)); @@ -55,7 +57,9 @@ Middleware _viewQuote() { } Middleware _viewQuoteList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewQuoteList; + next(action); store.dispatch(UpdateCurrentRoute(QuoteScreen.route)); @@ -65,7 +69,9 @@ Middleware _viewQuoteList() { } Middleware _editQuote() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditQuote; + next(action); store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route)); @@ -79,7 +85,9 @@ Middleware _editQuote() { } Middleware _showEmailQuote() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ShowEmailQuote; + next(action); final emailWasSent = @@ -92,7 +100,8 @@ Middleware _showEmailQuote() { } Middleware _archiveQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveQuoteRequest; final origQuote = store.state.quoteState.map[action.quoteId]; repository .saveData(store.state.selectedCompany, store.state.authState, origQuote, @@ -115,7 +124,8 @@ Middleware _archiveQuote(QuoteRepository repository) { } Middleware _deleteQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteQuoteRequest; final origQuote = store.state.quoteState.map[action.quoteId]; repository .saveData(store.state.selectedCompany, store.state.authState, origQuote, @@ -138,7 +148,8 @@ Middleware _deleteQuote(QuoteRepository repository) { } Middleware _restoreQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreQuoteRequest; final origQuote = store.state.quoteState.map[action.quoteId]; repository .saveData(store.state.selectedCompany, store.state.authState, origQuote, @@ -161,7 +172,8 @@ Middleware _restoreQuote(QuoteRepository repository) { } Middleware _convertQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ConvertQuote; final quote = store.state.quoteState.map[action.quoteId]; repository .saveData(store.state.selectedCompany, store.state.authState, quote, @@ -180,7 +192,8 @@ Middleware _convertQuote(QuoteRepository repository) { } Middleware _markSentQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as MarkSentQuoteRequest; final origQuote = store.state.quoteState.map[action.quoteId]; repository .saveData(store.state.selectedCompany, store.state.authState, origQuote, @@ -203,7 +216,8 @@ Middleware _markSentQuote(QuoteRepository repository) { } Middleware _emailQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as EmailQuoteRequest; final origQuote = store.state.quoteState.map[action.quoteId]; repository .emailQuote(store.state.selectedCompany, store.state.authState, @@ -226,7 +240,8 @@ Middleware _emailQuote(QuoteRepository repository) { } Middleware _saveQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveQuoteRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.quote) @@ -248,7 +263,8 @@ Middleware _saveQuote(QuoteRepository repository) { } Middleware _loadQuote(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadQuote; final AppState state = store.state; if (state.isLoading) { @@ -281,7 +297,8 @@ Middleware _loadQuote(QuoteRepository repository) { } Middleware _loadQuotes(QuoteRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadQuotes; final AppState state = store.state; if (!state.quoteState.isStale && !action.force) { diff --git a/lib/redux/quote/quote_reducer.dart b/lib/redux/quote/quote_reducer.dart index 948a79a1e..e74894437 100644 --- a/lib/redux/quote/quote_reducer.dart +++ b/lib/redux/quote/quote_reducer.dart @@ -35,11 +35,11 @@ String filterClientDropdownReducer( Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.quoteId), + (selectedId, action) => action.quoteId), TypedReducer( - (int selectedId, dynamic action) => action.quote.id), + (selectedId, action) => action.quote.id), TypedReducer( - (int selectedId, dynamic action) => action.quote.id), + (selectedId, action) => action.quote.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/settings/settings_middleware.dart b/lib/redux/settings/settings_middleware.dart index c8c93314f..265de1df7 100644 --- a/lib/redux/settings/settings_middleware.dart +++ b/lib/redux/settings/settings_middleware.dart @@ -16,7 +16,9 @@ List> createStoreSettingsMiddleware() { } Middleware _viewSettings() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewSettings; + if (hasChanges(store, action)) { return; } diff --git a/lib/redux/task/task_middleware.dart b/lib/redux/task/task_middleware.dart index 1d87762bf..dc8d7a1f6 100644 --- a/lib/redux/task/task_middleware.dart +++ b/lib/redux/task/task_middleware.dart @@ -38,7 +38,9 @@ List> createStoreTasksMiddleware([ } Middleware _editTask() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as EditTask; + next(action); store.dispatch(UpdateCurrentRoute(TaskEditScreen.route)); @@ -52,7 +54,9 @@ Middleware _editTask() { } Middleware _viewTask() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { + final action = dynamicAction as ViewTask; + next(action); store.dispatch(UpdateCurrentRoute(TaskViewScreen.route)); @@ -61,7 +65,9 @@ Middleware _viewTask() { } Middleware _viewTaskList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewTaskList; + next(action); store.dispatch(UpdateCurrentRoute(TaskScreen.route)); @@ -72,7 +78,8 @@ Middleware _viewTaskList() { } Middleware _archiveTask(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveTaskRequest; final origTask = store.state.taskState.map[action.taskId]; repository .saveData(store.state.selectedCompany, store.state.authState, origTask, @@ -95,7 +102,8 @@ Middleware _archiveTask(TaskRepository repository) { } Middleware _deleteTask(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteTaskRequest; final origTask = store.state.taskState.map[action.taskId]; repository .saveData(store.state.selectedCompany, store.state.authState, origTask, @@ -118,7 +126,8 @@ Middleware _deleteTask(TaskRepository repository) { } Middleware _restoreTask(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreTaskRequest; final origTask = store.state.taskState.map[action.taskId]; repository .saveData(store.state.selectedCompany, store.state.authState, origTask, @@ -141,7 +150,8 @@ Middleware _restoreTask(TaskRepository repository) { } Middleware _saveTask(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveTaskRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.task) @@ -163,7 +173,8 @@ Middleware _saveTask(TaskRepository repository) { } Middleware _loadTask(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadTask; final AppState state = store.state; if (state.isLoading) { @@ -193,7 +204,8 @@ Middleware _loadTask(TaskRepository repository) { } Middleware _loadTasks(TaskRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadTasks; final AppState state = store.state; if (!state.taskState.isStale && !action.force) { diff --git a/lib/redux/task/task_reducer.dart b/lib/redux/task/task_reducer.dart index 1930e1d82..f0b0e7df7 100644 --- a/lib/redux/task/task_reducer.dart +++ b/lib/redux/task/task_reducer.dart @@ -25,9 +25,9 @@ TaskTime editTaskTime(TaskTime taskTime, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.taskId), + (selectedId, action) => action.taskId), TypedReducer( - (int selectedId, dynamic action) => action.task.id), + (selectedId, action) => action.task.id), ]); final editingReducer = combineReducers([ diff --git a/lib/redux/vendor/vendor_middleware.dart b/lib/redux/vendor/vendor_middleware.dart index a8dc4621a..b06c4b7fb 100644 --- a/lib/redux/vendor/vendor_middleware.dart +++ b/lib/redux/vendor/vendor_middleware.dart @@ -39,7 +39,10 @@ List> createStoreVendorsMiddleware([ } Middleware _editVendor() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, + NextDispatcher next) async { + final action = dynamicAction as EditVendor; + next(action); if (action.trackRoute) { @@ -56,7 +59,10 @@ Middleware _editVendor() { } Middleware _viewVendor() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, + NextDispatcher next) async { + final action = dynamicAction as ViewVendor; + next(action); store.dispatch(UpdateCurrentRoute(VendorViewScreen.route)); @@ -65,7 +71,9 @@ Middleware _viewVendor() { } Middleware _viewVendorList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewVendorList; + next(action); store.dispatch(UpdateCurrentRoute(VendorScreen.route)); @@ -76,7 +84,8 @@ Middleware _viewVendorList() { } Middleware _archiveVendor(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ArchiveVendorRequest; final origVendor = store.state.vendorState.map[action.vendorId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -99,7 +108,8 @@ Middleware _archiveVendor(VendorRepository repository) { } Middleware _deleteVendor(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as DeleteVendorRequest; final origVendor = store.state.vendorState.map[action.vendorId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -122,7 +132,8 @@ Middleware _deleteVendor(VendorRepository repository) { } Middleware _restoreVendor(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as RestoreVendorRequest; final origVendor = store.state.vendorState.map[action.vendorId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -145,7 +156,8 @@ Middleware _restoreVendor(VendorRepository repository) { } Middleware _saveVendor(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as SaveVendorRequest; repository .saveData( store.state.selectedCompany, store.state.authState, action.vendor) @@ -167,7 +179,8 @@ Middleware _saveVendor(VendorRepository repository) { } Middleware _loadVendor(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadVendor; final AppState state = store.state; if (state.isLoading) { @@ -203,7 +216,8 @@ Middleware _loadVendor(VendorRepository repository) { } Middleware _loadVendors(VendorRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as LoadVendors; final AppState state = store.state; if (!state.vendorState.isStale && !action.force) { diff --git a/lib/redux/vendor/vendor_reducer.dart b/lib/redux/vendor/vendor_reducer.dart index b65dcf096..d7843e2d6 100644 --- a/lib/redux/vendor/vendor_reducer.dart +++ b/lib/redux/vendor/vendor_reducer.dart @@ -27,9 +27,9 @@ VendorContactEntity editVendorContact( Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.vendorId), + (selectedId, action) => action.vendorId), TypedReducer( - (int selectedId, dynamic action) => action.vendor.id), + (selectedId, action) => action.vendor.id), ]); final editingReducer = combineReducers([ diff --git a/stubs/redux/stub/stub_middleware b/stubs/redux/stub/stub_middleware index 715637e63..fae1dcb25 100644 --- a/stubs/redux/stub/stub_middleware +++ b/stubs/redux/stub/stub_middleware @@ -37,7 +37,7 @@ List> createStoreStubsMiddleware([ } Middleware _editStub() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(StubEditScreen.route)); @@ -51,7 +51,7 @@ Middleware _editStub() { } Middleware _viewStub() { - return (Store store, dynamic action, NextDispatcher next) async { + return (Store store, dynamic dynamicAction, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(StubViewScreen.route)); @@ -60,7 +60,7 @@ Middleware _viewStub() { } Middleware _viewStubList() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { next(action); store.dispatch(UpdateCurrentRoute(StubScreen.route)); @@ -70,7 +70,7 @@ Middleware _viewStubList() { } Middleware _archiveStub(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final origStub = store.state.stubState.map[action.stubId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -93,7 +93,7 @@ Middleware _archiveStub(StubRepository repository) { } Middleware _deleteStub(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final origStub = store.state.stubState.map[action.stubId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -116,7 +116,7 @@ Middleware _deleteStub(StubRepository repository) { } Middleware _restoreStub(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final origStub = store.state.stubState.map[action.stubId]; repository .saveData(store.state.selectedCompany, store.state.authState, @@ -139,7 +139,7 @@ Middleware _restoreStub(StubRepository repository) { } Middleware _saveStub(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { repository .saveData( store.state.selectedCompany, store.state.authState, action.stub) @@ -161,7 +161,7 @@ Middleware _saveStub(StubRepository repository) { } Middleware _loadStub(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final AppState state = store.state; if (state.isLoading) { @@ -191,7 +191,7 @@ Middleware _loadStub(StubRepository repository) { } Middleware _loadStubs(StubRepository repository) { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic dynamicAction, NextDispatcher next) { final AppState state = store.state; if (!state.stubState.isStale && !action.force) { diff --git a/stubs/redux/stub/stub_reducer b/stubs/redux/stub/stub_reducer index a90c53115..8161e601a 100644 --- a/stubs/redux/stub/stub_reducer +++ b/stubs/redux/stub/stub_reducer @@ -6,7 +6,7 @@ import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart'; import 'package:invoiceninja_flutter/redux/stub/stub_actions.dart'; import 'package:invoiceninja_flutter/redux/stub/stub_state.dart'; -EntityUIState stubUIReducer(StubUIState state, dynamic action) { +EntityUIState stubUIReducer(StubUIState state, dynamic dynamicAction) { return state.rebuild((b) => b ..listUIState.replace(stubListReducer(state.listUIState, action)) ..editing.replace(editingReducer(state.editing, action)) @@ -15,9 +15,9 @@ EntityUIState stubUIReducer(StubUIState state, dynamic action) { Reducer selectedIdReducer = combineReducers([ TypedReducer( - (int selectedId, dynamic action) => action.stubId), + (int selectedId, dynamic dynamicAction) => action.stubId), TypedReducer( - (int selectedId, dynamic action) => action.stub.id), + (int selectedId, dynamic dynamicAction) => action.stub.id), ]); final editingReducer = combineReducers([ @@ -31,11 +31,11 @@ final editingReducer = combineReducers([ TypedReducer(_clearEditing), ]); -StubEntity _clearEditing(StubEntity stub, dynamic action) { +StubEntity _clearEditing(StubEntity stub, dynamic dynamicAction) { return StubEntity(); } -StubEntity _updateEditing(StubEntity stub, dynamic action) { +StubEntity _updateEditing(StubEntity stub, dynamic dynamicAction) { return action.stub; }