Reload entity after renaming doc

This commit is contained in:
Hillel Coren 2023-05-25 13:18:06 +03:00
parent be306774c8
commit cb6944ac02
10 changed files with 62 additions and 16 deletions

View File

@ -12,7 +12,6 @@ import 'package:http/http.dart' as http;
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:image_cropper/image_cropper.dart'; import 'package:image_cropper/image_cropper.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
import 'package:invoiceninja_flutter/redux/document/document_actions.dart'; import 'package:invoiceninja_flutter/redux/document/document_actions.dart';
import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';

View File

@ -1,8 +1,11 @@
// 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/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.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/expense/view/expense_view_vm.dart'; import 'package:invoiceninja_flutter/ui/expense/view/expense_view_vm.dart';
@ -15,11 +18,15 @@ class ExpenseViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
return DocumentGrid( return DocumentGrid(
documents: expense.documents.toList(), documents: expense.documents.toList(),
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(LoadExpense(expenseId: expense.id)),
onViewExpense: null, onViewExpense: null,
); );
} }

View File

@ -1,9 +1,10 @@
// 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/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/group/group_actions.dart'; import 'package:invoiceninja_flutter/redux/group/group_actions.dart';
import 'package:invoiceninja_flutter/redux/group/group_selectors.dart'; import 'package:invoiceninja_flutter/redux/group/group_selectors.dart';
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart'; import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
@ -49,6 +50,7 @@ class _GroupViewState extends State<GroupView>
@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;
@ -110,6 +112,8 @@ class _GroupViewState extends State<GroupView>
viewModel.onUploadDocument(context, path), viewModel.onUploadDocument(context, path),
onDeleteDocument: (document, password, idToken) => viewModel onDeleteDocument: (document, password, idToken) => viewModel
.onDeleteDocument(context, document, password, idToken), .onDeleteDocument(context, document, password, idToken),
onRenamedDocument: () =>
store.dispatch(LoadGroup(groupId: group.id)),
), ),
], ],
), ),

View File

@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/data/models/vendor_model.dart'; import 'package:invoiceninja_flutter/data/models/vendor_model.dart';
import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
import 'package:invoiceninja_flutter/redux/vendor/vendor_actions.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_actions.dart';
import 'package:invoiceninja_flutter/redux/vendor/vendor_selectors.dart'; import 'package:invoiceninja_flutter/redux/vendor/vendor_selectors.dart';
import 'package:invoiceninja_flutter/ui/app/autobill_dropdown_menu_item.dart'; import 'package:invoiceninja_flutter/ui/app/autobill_dropdown_menu_item.dart';
@ -939,18 +940,21 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
HelpText(localization.saveToUploadDocuments) HelpText(localization.saveToUploadDocuments)
else else
DocumentGrid( DocumentGrid(
documents: invoice.documents.toList(), documents:
onUploadDocument: (path) => widget originalInvoice.documents.toList(),
.entityViewModel onUploadDocument: (path) => widget
.onUploadDocument(context, path), .entityViewModel
onDeleteDocument: .onUploadDocument(context, path),
(document, password, idToken) => onDeleteDocument: (document, password,
widget.entityViewModel idToken) =>
.onDeleteDocument( widget.entityViewModel.onDeleteDocument(
context, context,
document, document,
password, password,
idToken)) idToken),
onRenamedDocument: () => store.dispatch(
LoadInvoice(invoiceId: invoice.id)),
)
], ],
), ),
), ),

View File

@ -1,8 +1,11 @@
// 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/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_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/invoice/view/invoice_view_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart';
@ -16,12 +19,16 @@ class InvoiceViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
return DocumentGrid( return DocumentGrid(
documents: invoice.documents.toList(), documents: invoice.documents.toList(),
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),
onViewExpense: (document) => viewModel.onViewExpense(context, document), onViewExpense: (document) => viewModel.onViewExpense(context, document),
onRenamedDocument: () =>
store.dispatch(LoadInvoice(invoiceId: invoice.id)),
); );
} }
} }

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/product/product_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 ProductViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final product = viewModel.product; final product = viewModel.product;
return DocumentGrid( return DocumentGrid(
@ -20,6 +24,8 @@ class ProductViewDocuments 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(LoadProduct(productId: product.id)),
); );
} }
} }

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/project/project_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 ProjectViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final project = viewModel.project; final project = viewModel.project;
return DocumentGrid( return DocumentGrid(
@ -20,6 +24,8 @@ class ProjectViewDocuments 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(LoadProject(projectId: project.id)),
); );
} }
} }

View File

@ -1,14 +1,15 @@
// 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_actions.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
// Package imports: // Package imports:
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter_redux/flutter_redux.dart';
// Project imports: // Project imports:
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/main_app.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.dart'; import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.dart';
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
import 'package:invoiceninja_flutter/redux/static/static_selectors.dart'; import 'package:invoiceninja_flutter/redux/static/static_selectors.dart';
@ -217,6 +218,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
@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;
@ -700,6 +702,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
viewModel.onUploadDocument(context, path), viewModel.onUploadDocument(context, path),
onDeleteDocument: (document, password, idToken) => viewModel onDeleteDocument: (document, password, idToken) => viewModel
.onDeleteDocument(context, document, password, idToken), .onDeleteDocument(context, document, password, idToken),
onRenamedDocument: () => store.dispatch(RefreshData()),
), ),
], ],
), ),

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/task/task_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 TaskViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final task = viewModel.task; final task = viewModel.task;
return DocumentGrid( return DocumentGrid(
@ -20,6 +24,7 @@ class TaskViewDocuments 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(LoadTask(taskId: task.id)),
); );
} }
} }

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/vendor/vendor_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 VendorViewDocuments extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context);
final vendor = viewModel.vendor; final vendor = viewModel.vendor;
return DocumentGrid( return DocumentGrid(
@ -20,6 +24,7 @@ class VendorViewDocuments 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(LoadVendor(vendorId: vendor.id)),
); );
} }
} }