Starter...
This commit is contained in:
parent
e895d00981
commit
36a0fe56bc
|
|
@ -0,0 +1,97 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:flutter/foundation.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/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/credit/edit/credit_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_desktop.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
|
||||
class CreditEditDetailsScreen extends StatelessWidget {
|
||||
const CreditEditDetailsScreen({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector<AppState, CreditEditDetailsVM>(
|
||||
converter: (Store<AppState> store) {
|
||||
return CreditEditDetailsVM.fromStore(store);
|
||||
},
|
||||
builder: (context, viewModel) {
|
||||
if (viewModel.state.prefState.isDesktop) {
|
||||
return InvoiceEditDesktop(
|
||||
viewModel: viewModel,
|
||||
key: ValueKey('__credit_${viewModel.invoice.id}__'),
|
||||
entityType: EntityType.credit,
|
||||
);
|
||||
} else {
|
||||
return InvoiceEditDetails(
|
||||
viewModel: viewModel,
|
||||
entityType: EntityType.credit,
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CreditEditDetailsVM extends EntityEditDetailsVM {
|
||||
CreditEditDetailsVM({
|
||||
AppState state,
|
||||
CompanyEntity company,
|
||||
InvoiceEntity invoice,
|
||||
Function(InvoiceEntity) onChanged,
|
||||
Function(InvoiceEntity, ClientEntity) onClientChanged,
|
||||
BuiltMap<String, ClientEntity> clientMap,
|
||||
BuiltList<String> clientList,
|
||||
Function(BuildContext context, Completer<SelectableEntity> completer)
|
||||
onAddClientPressed,
|
||||
}) : super(
|
||||
state: state,
|
||||
company: company,
|
||||
invoice: invoice,
|
||||
onChanged: onChanged,
|
||||
onClientChanged: onClientChanged,
|
||||
clientMap: clientMap,
|
||||
clientList: clientList,
|
||||
onAddClientPressed: onAddClientPressed,
|
||||
);
|
||||
|
||||
factory CreditEditDetailsVM.fromStore(Store<AppState> store) {
|
||||
final AppState state = store.state;
|
||||
final credit = state.creditUIState.editing;
|
||||
|
||||
return CreditEditDetailsVM(
|
||||
state: state,
|
||||
company: state.company,
|
||||
invoice: credit,
|
||||
onChanged: (InvoiceEntity credit) => store.dispatch(UpdateCredit(credit)),
|
||||
clientMap: state.clientState.map,
|
||||
clientList: state.clientState.list,
|
||||
onClientChanged: (invoice, client) {
|
||||
store.dispatch(UpdateCreditClient(client: client));
|
||||
},
|
||||
onAddClientPressed: (context, completer) {
|
||||
createEntity(
|
||||
context: context,
|
||||
entity: ClientEntity(),
|
||||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then((_) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items_desktop.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items_vm.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
|
||||
class CreditEditItemsScreen extends StatelessWidget {
|
||||
const CreditEditItemsScreen({
|
||||
Key key,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector<AppState, CreditEditItemsVM>(
|
||||
converter: (Store<AppState> store) {
|
||||
return CreditEditItemsVM.fromStore(store);
|
||||
},
|
||||
builder: (context, viewModel) {
|
||||
if (viewModel.state.prefState.isDesktop) {
|
||||
return InvoiceEditItemsDesktop(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
} else {
|
||||
return InvoiceEditItems(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CreditEditItemsVM extends EntityEditItemsVM {
|
||||
CreditEditItemsVM({
|
||||
AppState state,
|
||||
CompanyEntity company,
|
||||
InvoiceEntity invoice,
|
||||
int invoiceItemIndex,
|
||||
Function addLineItem,
|
||||
Function deleteLineItem,
|
||||
Function(int) onRemoveInvoiceItemPressed,
|
||||
Function onDoneInvoiceItemPressed,
|
||||
Function(InvoiceItemEntity, int) onChangedInvoiceItem,
|
||||
}) : super(
|
||||
state: state,
|
||||
company: company,
|
||||
invoice: invoice,
|
||||
addLineItem: addLineItem,
|
||||
deleteLineItem: deleteLineItem,
|
||||
invoiceItemIndex: invoiceItemIndex,
|
||||
onRemoveInvoiceItemPressed: onRemoveInvoiceItemPressed,
|
||||
onDoneInvoiceItemPressed: onDoneInvoiceItemPressed,
|
||||
onChangedInvoiceItem: onChangedInvoiceItem,
|
||||
);
|
||||
|
||||
factory CreditEditItemsVM.fromStore(Store<AppState> store) {
|
||||
final AppState state = store.state;
|
||||
final credit = state.creditUIState.editing;
|
||||
|
||||
return CreditEditItemsVM(
|
||||
state: state,
|
||||
company: state.company,
|
||||
invoice: credit,
|
||||
invoiceItemIndex: state.creditUIState.editingItemIndex,
|
||||
onRemoveInvoiceItemPressed: (index) =>
|
||||
store.dispatch(DeleteCreditItem(index)),
|
||||
onDoneInvoiceItemPressed: () => store.dispatch(EditCreditItem()),
|
||||
onChangedInvoiceItem: (creditItem, index) {
|
||||
if (index == credit.lineItems.length) {
|
||||
store.dispatch(AddCreditItem(creditItem: creditItem));
|
||||
} else {
|
||||
store.dispatch(UpdateCreditItem(creditItem: creditItem, index: index));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
|
||||
class CreditEditNotesScreen extends StatelessWidget {
|
||||
const CreditEditNotesScreen({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector<AppState, CreditEditNotesVM>(
|
||||
converter: (Store<AppState> store) {
|
||||
return CreditEditNotesVM.fromStore(store);
|
||||
},
|
||||
builder: (context, viewModel) {
|
||||
return InvoiceEditNotes(
|
||||
viewModel: viewModel,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CreditEditNotesVM extends EntityEditNotesVM {
|
||||
CreditEditNotesVM({
|
||||
CompanyEntity company,
|
||||
InvoiceEntity invoice,
|
||||
Function(InvoiceEntity) onChanged,
|
||||
}) : super(
|
||||
company: company,
|
||||
invoice: invoice,
|
||||
onChanged: onChanged,
|
||||
);
|
||||
|
||||
factory CreditEditNotesVM.fromStore(Store<AppState> store) {
|
||||
final AppState state = store.state;
|
||||
final credit = state.creditUIState.editing;
|
||||
|
||||
return CreditEditNotesVM(
|
||||
company: state.company,
|
||||
invoice: credit,
|
||||
onChanged: (InvoiceEntity credit) => store.dispatch(UpdateCredit(credit)),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue