Reload entity after renaming doc

This commit is contained in:
Hillel Coren 2023-05-25 12:08:43 +03:00
parent 059953ae04
commit be306774c8
3 changed files with 24 additions and 7 deletions

View File

@ -41,6 +41,7 @@ class DocumentGrid extends StatelessWidget {
@required this.documents, @required this.documents,
@required this.onUploadDocument, @required this.onUploadDocument,
@required this.onDeleteDocument, @required this.onDeleteDocument,
@required this.onRenamedDocument,
this.onViewExpense, this.onViewExpense,
}); });
@ -48,6 +49,7 @@ class DocumentGrid extends StatelessWidget {
final Function(MultipartFile) onUploadDocument; final Function(MultipartFile) onUploadDocument;
final Function(DocumentEntity, String, String) onDeleteDocument; final Function(DocumentEntity, String, String) onDeleteDocument;
final Function(DocumentEntity) onViewExpense; final Function(DocumentEntity) onViewExpense;
final Function onRenamedDocument;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -133,6 +135,7 @@ class DocumentGrid extends StatelessWidget {
document: document, document: document,
onDeleteDocument: onDeleteDocument, onDeleteDocument: onDeleteDocument,
onViewExpense: onViewExpense, onViewExpense: onViewExpense,
onRenamedDocument: onRenamedDocument,
isFromExpense: false, isFromExpense: false,
)) ))
.toList(), .toList(),
@ -149,12 +152,14 @@ class DocumentTile extends StatelessWidget {
@required this.onDeleteDocument, @required this.onDeleteDocument,
@required this.onViewExpense, @required this.onViewExpense,
@required this.isFromExpense, @required this.isFromExpense,
@required this.onRenamedDocument,
}); });
final DocumentEntity document; final DocumentEntity document;
final Function(DocumentEntity, String, String) onDeleteDocument; final Function(DocumentEntity, String, String) onDeleteDocument;
final Function(DocumentEntity) onViewExpense; final Function(DocumentEntity) onViewExpense;
final bool isFromExpense; final bool isFromExpense;
final Function onRenamedDocument;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -260,7 +265,7 @@ class DocumentTile extends StatelessWidget {
context, context,
localization.renamedDocument) localization.renamedDocument)
..future.then((value) { ..future.then((value) {
store.dispatch(RefreshData()); onRenamedDocument();
}), }),
entity: document entity: document
.rebuild((b) => b..name = name)), .rebuild((b) => b..name = name)),

View File

@ -1,5 +1,8 @@
// Flutter imports: // Flutter imports:
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/client/client_actions.dart';
// Project imports: // Project imports:
import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/app/document_grid.dart';
@ -13,6 +16,7 @@ class ClientViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final client = viewModel.client; final client = viewModel.client;
return DocumentGrid( return DocumentGrid(
@ -20,6 +24,7 @@ class ClientViewDocuments extends StatelessWidget {
onUploadDocument: (path) => viewModel.onUploadDocument(context, path), onUploadDocument: (path) => viewModel.onUploadDocument(context, path),
onDeleteDocument: (document, password, idToken) => onDeleteDocument: (document, password, idToken) =>
viewModel.onDeleteDocument(context, document, password, idToken), viewModel.onDeleteDocument(context, document, password, idToken),
onRenamedDocument: () => store.dispatch(LoadClient(clientId: client.id)),
); );
} }
} }

View File

@ -1,9 +1,12 @@
// Flutter imports: // Flutter imports:
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
// Project imports: // Project imports:
import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/expense/expense_actions.dart';
import 'package:invoiceninja_flutter/ui/app/document_grid.dart'; import 'package:invoiceninja_flutter/ui/app/document_grid.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart'; import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
@ -77,6 +80,7 @@ class ExpenseEditNotesState extends State<ExpenseEditNotes> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
final viewModel = widget.viewModel; final viewModel = widget.viewModel;
final state = viewModel.state; final state = viewModel.state;
@ -115,12 +119,15 @@ class ExpenseEditNotesState extends State<ExpenseEditNotes> {
) )
else else
DocumentGrid( DocumentGrid(
documents: expense.documents.toList(), documents: expense.documents.toList(),
onUploadDocument: (path) => onUploadDocument: (path) =>
widget.viewModel.onUploadDocument(context, path), widget.viewModel.onUploadDocument(context, path),
onDeleteDocument: (document, password, idToken) => widget onDeleteDocument: (document, password, idToken) => widget
.viewModel .viewModel
.onDeleteDocument(context, document, password, idToken)) .onDeleteDocument(context, document, password, idToken),
onRenamedDocument: () =>
store.dispatch(LoadExpense(expenseId: expense.id)),
)
], ],
), ),
], ],