diff --git a/lib/redux/document/document_middleware.dart b/lib/redux/document/document_middleware.dart index 646087609..77aefaa04 100644 --- a/lib/redux/document/document_middleware.dart +++ b/lib/redux/document/document_middleware.dart @@ -169,12 +169,13 @@ Middleware _downloadDocuments(DocumentRepository repository) { Middleware _deleteDocument(DocumentRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as DeleteDocumentRequest; + final documentId = action.documentIds.first; repository - .delete(store.state.credentials, action.documentIds.first, - action.password, action.idToken) + .delete(store.state.credentials, documentId, action.password, + action.idToken) .then((value) { - store.dispatch(DeleteDocumentSuccess()); + store.dispatch(DeleteDocumentSuccess(documentId: documentId)); if (action.completer != null) { action.completer.complete(null); } diff --git a/lib/redux/document/document_reducer.dart b/lib/redux/document/document_reducer.dart index 26450b13b..5651092ab 100644 --- a/lib/redux/document/document_reducer.dart +++ b/lib/redux/document/document_reducer.dart @@ -184,7 +184,9 @@ DocumentState _archiveDocumentSuccess( DocumentState _deleteDocumentSuccess( DocumentState documentState, DeleteDocumentSuccess action) { - return documentState.rebuild((b) => b..map.remove(action.documentId)); + return documentState.rebuild((b) => b + ..map.remove(action.documentId) + ..list.remove(action.documentId)); } DocumentState _restoreDocumentSuccess( diff --git a/lib/redux/settings/settings_reducer.dart b/lib/redux/settings/settings_reducer.dart index 13254f132..420f5cef1 100644 --- a/lib/redux/settings/settings_reducer.dart +++ b/lib/redux/settings/settings_reducer.dart @@ -1,4 +1,5 @@ // Package imports: +import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_state.dart'; import 'package:redux/redux.dart'; @@ -78,6 +79,11 @@ Reducer settingsUIReducer = combineReducers([ ..updatedAt = DateTime.now().millisecondsSinceEpoch ..isChanged = false); }), + TypedReducer((state, action) { + return state.rebuild( + (b) => b..updatedAt = DateTime.now().millisecondsSinceEpoch, + ); + }), TypedReducer((state, action) { return state.rebuild((b) => b ..group.replace(action.group) diff --git a/lib/ui/settings/company_details.dart b/lib/ui/settings/company_details.dart index bbbb35ad4..c901ca01c 100644 --- a/lib/ui/settings/company_details.dart +++ b/lib/ui/settings/company_details.dart @@ -251,9 +251,9 @@ class _CompanyDetailsState extends State ), if (!state.settingsUIState.isFiltered) Tab( - text: company.documents.isEmpty + text: state.company.documents.isEmpty ? localization.documents - : '${localization.documents} (${company.documents.length})', + : '${localization.documents} (${state.company.documents.length})', ), ], ), @@ -700,7 +700,7 @@ class _CompanyDetailsState extends State ), if (!state.settingsUIState.isFiltered) DocumentGrid( - documents: company.documents.toList(), + documents: state.company.documents.toList(), onUploadDocument: (path) => viewModel.onUploadDocuments(context, path), onDeleteDocument: (document, password, idToken) => viewModel