Expenses
This commit is contained in:
parent
e1cf7150af
commit
4ad28040c7
|
|
@ -1,8 +1,15 @@
|
|||
import 'dart:async';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense/expense_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment/payment_actions.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class ViewClientList implements PersistUI {
|
||||
ViewClientList(this.context);
|
||||
|
|
@ -244,3 +251,46 @@ class FilterClientsByCustom2 implements PersistUI {
|
|||
|
||||
final String value;
|
||||
}
|
||||
|
||||
void handleClientAction(
|
||||
ClientEntity client, EntityAction action, BuildContext context) {
|
||||
final store = StoreProvider.of<AppState>(context);
|
||||
final state = store.state;
|
||||
final CompanyEntity company = state.selectedCompany;
|
||||
final localization = AppLocalization.of(context);
|
||||
switch (action) {
|
||||
case EntityAction.edit:
|
||||
store.dispatch(EditClient(context: context, client: client));
|
||||
break;
|
||||
case EntityAction.newInvoice:
|
||||
store.dispatch(EditInvoice(
|
||||
invoice: InvoiceEntity(company: company)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.newExpense:
|
||||
store.dispatch(EditExpense(
|
||||
expense: ExpenseEntity(
|
||||
company: company, client: client, uiState: state.uiState),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.enterPayment:
|
||||
store.dispatch(EditPayment(
|
||||
payment: PaymentEntity(company: company)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.restore:
|
||||
store.dispatch(RestoreClientRequest(
|
||||
snackBarCompleter(context, localization.restoredClient), client.id));
|
||||
break;
|
||||
case EntityAction.archive:
|
||||
store.dispatch(ArchiveClientRequest(
|
||||
snackBarCompleter(context, localization.archivedClient), client.id));
|
||||
break;
|
||||
case EntityAction.delete:
|
||||
store.dispatch(DeleteClientRequest(
|
||||
snackBarCompleter(context, localization.deletedClient), client.id));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ class ClientList extends StatelessWidget {
|
|||
if (action == EntityAction.more) {
|
||||
_showMenu(context, client, viewModel.user);
|
||||
} else {
|
||||
Navigator.of(context).pop();
|
||||
viewModel.onEntityAction(context, client, action);
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense/expense_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment/payment_actions.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
|
|
@ -80,50 +77,9 @@ class ClientListVM {
|
|||
onClientTap: (context, client) {
|
||||
store.dispatch(ViewClient(clientId: client.id, context: context));
|
||||
},
|
||||
onEntityAction: (context, client, action) {
|
||||
final localization = AppLocalization.of(context);
|
||||
switch (action) {
|
||||
case EntityAction.edit:
|
||||
store.dispatch(EditClient(context: context, client: client));
|
||||
break;
|
||||
case EntityAction.newInvoice:
|
||||
store.dispatch(EditInvoice(
|
||||
invoice: InvoiceEntity(company: state.selectedCompany)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.newExpense:
|
||||
store.dispatch(EditExpense(
|
||||
expense: ExpenseEntity(
|
||||
company: state.selectedCompany,
|
||||
client: client,
|
||||
uiState: state.uiState),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.enterPayment:
|
||||
store.dispatch(EditPayment(
|
||||
payment: PaymentEntity(company: state.selectedCompany)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.restore:
|
||||
store.dispatch(RestoreClientRequest(
|
||||
snackBarCompleter(context, localization.restoredClient),
|
||||
client.id));
|
||||
break;
|
||||
case EntityAction.archive:
|
||||
store.dispatch(ArchiveClientRequest(
|
||||
snackBarCompleter(context, localization.archivedClient),
|
||||
client.id));
|
||||
break;
|
||||
case EntityAction.delete:
|
||||
store.dispatch(DeleteClientRequest(
|
||||
snackBarCompleter(context, localization.deletedClient),
|
||||
client.id));
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
onEntityAction:
|
||||
(BuildContext context, ClientEntity client, EntityAction action) =>
|
||||
handleClientAction(client, action, context),
|
||||
onRefreshed: (context) => _handleRefresh(context),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,8 +77,8 @@ class ClientViewVM {
|
|||
company: state.selectedCompany,
|
||||
onEditPressed: (BuildContext context) {
|
||||
final Completer<ClientEntity> completer = Completer<ClientEntity>();
|
||||
store.dispatch(EditClient(
|
||||
client: client, context: context, completer: completer));
|
||||
store.dispatch(
|
||||
EditClient(client: client, context: context, completer: completer));
|
||||
completer.future.then((client) {
|
||||
Scaffold.of(context).showSnackBar(SnackBar(
|
||||
content: SnackBarRow(
|
||||
|
|
@ -130,8 +130,8 @@ class ClientViewVM {
|
|||
if (longPress) {
|
||||
store.dispatch(EditProject(
|
||||
context: context,
|
||||
project: ProjectEntity()
|
||||
.rebuild((b) => b..clientId = client.id)));
|
||||
project:
|
||||
ProjectEntity().rebuild((b) => b..clientId = client.id)));
|
||||
} else {
|
||||
store.dispatch(FilterProjectsByEntity(
|
||||
entityId: client.id, entityType: EntityType.client));
|
||||
|
|
@ -173,46 +173,9 @@ class ClientViewVM {
|
|||
store.dispatch(UpdateCurrentRoute(ClientScreen.route));
|
||||
}
|
||||
},
|
||||
onActionSelected: (BuildContext context, EntityAction action) {
|
||||
final localization = AppLocalization.of(context);
|
||||
switch (action) {
|
||||
case EntityAction.newInvoice:
|
||||
store.dispatch(EditInvoice(
|
||||
invoice: InvoiceEntity(company: state.selectedCompany)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.newExpense:
|
||||
store.dispatch(EditExpense(
|
||||
expense: ExpenseEntity(
|
||||
company: state.selectedCompany,
|
||||
client: client,
|
||||
uiState: state.uiState),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.enterPayment:
|
||||
store.dispatch(EditPayment(
|
||||
payment: PaymentEntity(company: state.selectedCompany)
|
||||
.rebuild((b) => b.clientId = client.id),
|
||||
context: context));
|
||||
break;
|
||||
case EntityAction.archive:
|
||||
store.dispatch(ArchiveClientRequest(
|
||||
popCompleter(context, localization.archivedClient),
|
||||
client.id));
|
||||
break;
|
||||
case EntityAction.delete:
|
||||
store.dispatch(DeleteClientRequest(
|
||||
popCompleter(context, localization.deletedClient),
|
||||
client.id));
|
||||
break;
|
||||
case EntityAction.restore:
|
||||
store.dispatch(RestoreClientRequest(
|
||||
snackBarCompleter(context, localization.restoredClient),
|
||||
client.id));
|
||||
break;
|
||||
}
|
||||
});
|
||||
onActionSelected: (BuildContext context, EntityAction action) =>
|
||||
handleClientAction(client, action, context),
|
||||
);
|
||||
}
|
||||
|
||||
final ClientEntity client;
|
||||
|
|
|
|||
Loading…
Reference in New Issue