Documents
This commit is contained in:
parent
cde902f38a
commit
be0d7f285a
|
|
@ -11,10 +11,15 @@ import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||||
|
|
||||||
class DocumentGrid extends StatelessWidget {
|
class DocumentGrid extends StatelessWidget {
|
||||||
const DocumentGrid({@required this.documents, @required this.onFileUpload});
|
const DocumentGrid({
|
||||||
|
@required this.documents,
|
||||||
|
@required this.onFileUpload,
|
||||||
|
@required this.onDeleteDocument,
|
||||||
|
});
|
||||||
|
|
||||||
final List<int> documents;
|
final List<int> documents;
|
||||||
final Function(String) onFileUpload;
|
final Function(String) onFileUpload;
|
||||||
|
final Function(DocumentEntity) onDeleteDocument;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
@ -63,8 +68,10 @@ class DocumentGrid extends StatelessWidget {
|
||||||
primary: true,
|
primary: true,
|
||||||
crossAxisCount: 2,
|
crossAxisCount: 2,
|
||||||
children: documents
|
children: documents
|
||||||
.map((documentId) =>
|
.map((documentId) => DocumentTile(
|
||||||
DocumentTile(state.documentState.map[documentId]))
|
document: state.documentState.map[documentId],
|
||||||
|
onDeleteDocument: onDeleteDocument,
|
||||||
|
))
|
||||||
.toList(),
|
.toList(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -73,9 +80,13 @@ class DocumentGrid extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class DocumentTile extends StatelessWidget {
|
class DocumentTile extends StatelessWidget {
|
||||||
const DocumentTile(this.document);
|
const DocumentTile({
|
||||||
|
@required this.document,
|
||||||
|
@required this.onDeleteDocument,
|
||||||
|
});
|
||||||
|
|
||||||
final DocumentEntity document;
|
final DocumentEntity document;
|
||||||
|
final Function(DocumentEntity) onDeleteDocument;
|
||||||
|
|
||||||
void showDocumentModal(BuildContext context) {
|
void showDocumentModal(BuildContext context) {
|
||||||
showDialog<Column>(
|
showDialog<Column>(
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ class ExpenseViewDocuments extends StatelessWidget {
|
||||||
return DocumentGrid(
|
return DocumentGrid(
|
||||||
documents: documents,
|
documents: documents,
|
||||||
onFileUpload: (path) => viewModel.onFileUpload(context, path),
|
onFileUpload: (path) => viewModel.onFileUpload(context, path),
|
||||||
|
onDeleteDocument: (document) =>
|
||||||
|
viewModel.onDeleteDocument(context, document),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class ExpenseViewVM {
|
||||||
@required this.onBackPressed,
|
@required this.onBackPressed,
|
||||||
@required this.onRefreshed,
|
@required this.onRefreshed,
|
||||||
@required this.onFileUpload,
|
@required this.onFileUpload,
|
||||||
|
@required this.onDeleteDocument,
|
||||||
@required this.isSaving,
|
@required this.isSaving,
|
||||||
@required this.isLoading,
|
@required this.isLoading,
|
||||||
@required this.isDirty,
|
@required this.isDirty,
|
||||||
|
|
@ -107,7 +108,8 @@ class ExpenseViewVM {
|
||||||
EntityAction action) =>
|
EntityAction action) =>
|
||||||
handleVendorAction(context, vendor, action));
|
handleVendorAction(context, vendor, action));
|
||||||
} else {
|
} else {
|
||||||
store.dispatch(ViewVendor(vendorId: vendor.id, context: context));
|
store.dispatch(
|
||||||
|
ViewVendor(vendorId: vendor.id, context: context));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EntityType.client:
|
case EntityType.client:
|
||||||
|
|
@ -120,7 +122,8 @@ class ExpenseViewVM {
|
||||||
EntityAction action) =>
|
EntityAction action) =>
|
||||||
handleClientAction(context, client, action));
|
handleClientAction(context, client, action));
|
||||||
} else {
|
} else {
|
||||||
store.dispatch(ViewClient(clientId: client.id, context: context));
|
store.dispatch(
|
||||||
|
ViewClient(clientId: client.id, context: context));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EntityType.invoice:
|
case EntityType.invoice:
|
||||||
|
|
@ -143,7 +146,8 @@ class ExpenseViewVM {
|
||||||
onEntityAction: (BuildContext context, EntityAction action) =>
|
onEntityAction: (BuildContext context, EntityAction action) =>
|
||||||
handleExpenseAction(context, expense, action),
|
handleExpenseAction(context, expense, action),
|
||||||
onFileUpload: (BuildContext context, String path) {
|
onFileUpload: (BuildContext context, String path) {
|
||||||
final Completer<DocumentEntity> completer = Completer<DocumentEntity>();
|
final Completer<DocumentEntity> completer =
|
||||||
|
Completer<DocumentEntity>();
|
||||||
final document = DocumentEntity().rebuild((b) => b
|
final document = DocumentEntity().rebuild((b) => b
|
||||||
..expenseId = expense.id
|
..expenseId = expense.id
|
||||||
..path = path);
|
..path = path);
|
||||||
|
|
@ -156,7 +160,12 @@ class ExpenseViewVM {
|
||||||
)));
|
)));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
);
|
onDeleteDocument: (BuildContext context, DocumentEntity document) {
|
||||||
|
store.dispatch(DeleteDocumentRequest(
|
||||||
|
snackBarCompleter(
|
||||||
|
context, AppLocalization.of(context).deletedDocument),
|
||||||
|
document.id));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
final AppState state;
|
final AppState state;
|
||||||
|
|
@ -168,6 +177,7 @@ class ExpenseViewVM {
|
||||||
final Function onBackPressed;
|
final Function onBackPressed;
|
||||||
final Function(BuildContext) onRefreshed;
|
final Function(BuildContext) onRefreshed;
|
||||||
final Function(BuildContext, String) onFileUpload;
|
final Function(BuildContext, String) onFileUpload;
|
||||||
|
final Function(BuildContext, DocumentEntity) onDeleteDocument;
|
||||||
final bool isSaving;
|
final bool isSaving;
|
||||||
final bool isLoading;
|
final bool isLoading;
|
||||||
final bool isDirty;
|
final bool isDirty;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue