This commit is contained in:
unknown 2018-06-17 10:36:08 -07:00
parent e9fae48d10
commit c8219f855e
12 changed files with 73 additions and 149 deletions

View File

@ -98,11 +98,11 @@ class _InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
},
ProductEditScreen.route: (context) => ProductEditScreen(),
ClientScreen.route: (context) {
widget.store.dispatch(LoadClientsAction());
widget.store.dispatch(LoadClients());
return ClientScreen();
},
InvoiceScreen.route: (context) {
widget.store.dispatch(LoadInvoicesAction());
widget.store.dispatch(LoadInvoices());
return InvoiceScreen();
},
},

View File

@ -1,95 +1,18 @@
import 'package:invoiceninja/redux/app/app_actions.dart';
import 'package:invoiceninja/redux/client/client_actions.dart';
import 'package:redux/redux.dart';
import 'package:invoiceninja/redux/product/product_actions.dart';
import 'package:invoiceninja/redux/invoice/invoice_actions.dart';
import 'package:invoiceninja/redux/auth/auth_actions.dart';
final loadingReducer = combineReducers<bool>([
TypedReducer<bool, UserLoginRequest>(_setLoading),
TypedReducer<bool, UserLoginSuccess>(_setLoaded),
TypedReducer<bool, UserLoginFailure>(_setLoaded),
TypedReducer<bool, StartLoading>(_setLoading),
TypedReducer<bool, StopLoading>(_setLoaded),
//TypedReducer<bool, LoadDashboardRequest>(_setLoading),
//TypedReducer<bool, LoadDashboardSuccess>(_setLoaded),
//TypedReducer<bool, LoadDashboardFailure>(_setLoaded),
// Products
TypedReducer<bool, LoadProductsRequest>(_setLoading),
TypedReducer<bool, LoadProductsSuccess>(_setLoaded),
TypedReducer<bool, LoadProductsFailure>(_setLoaded),
TypedReducer<bool, SaveProductRequest>(_setLoading),
TypedReducer<bool, SaveProductFailure>(_setLoaded),
TypedReducer<bool, SaveProductSuccess>(_setLoaded),
TypedReducer<bool, AddProductSuccess>(_setLoaded),
TypedReducer<bool, ArchiveProductRequest>(_setLoading),
TypedReducer<bool, ArchiveProductSuccess>(_setLoaded),
TypedReducer<bool, ArchiveProductFailure>(_setLoaded),
TypedReducer<bool, DeleteProductRequest>(_setLoading),
TypedReducer<bool, DeleteProductSuccess>(_setLoaded),
TypedReducer<bool, DeleteProductFailure>(_setLoaded),
TypedReducer<bool, RestoreProductRequest>(_setLoading),
TypedReducer<bool, RestoreProductSuccess>(_setLoaded),
TypedReducer<bool, RestoreProductFailure>(_setLoaded),
// Clients
TypedReducer<bool, LoadClientsRequest>(_setLoading),
TypedReducer<bool, LoadClientsSuccess>(_setLoaded),
TypedReducer<bool, LoadClientsFailure>(_setLoaded),
TypedReducer<bool, SaveClientRequest>(_setLoading),
TypedReducer<bool, SaveClientFailure>(_setLoaded),
TypedReducer<bool, SaveClientSuccess>(_setLoaded),
TypedReducer<bool, AddClientSuccess>(_setLoaded),
TypedReducer<bool, ArchiveClientRequest>(_setLoading),
TypedReducer<bool, ArchiveClientSuccess>(_setLoaded),
TypedReducer<bool, ArchiveClientFailure>(_setLoaded),
TypedReducer<bool, DeleteClientRequest>(_setLoading),
TypedReducer<bool, DeleteClientSuccess>(_setLoaded),
TypedReducer<bool, DeleteClientFailure>(_setLoaded),
TypedReducer<bool, RestoreClientRequest>(_setLoading),
TypedReducer<bool, RestoreClientSuccess>(_setLoaded),
TypedReducer<bool, RestoreClientFailure>(_setLoaded),
// Invoices
TypedReducer<bool, LoadInvoicesRequest>(_setLoading),
TypedReducer<bool, LoadInvoicesSuccess>(_setLoaded),
TypedReducer<bool, LoadInvoicesFailure>(_setLoaded),
TypedReducer<bool, SaveInvoiceRequest>(_setLoading),
TypedReducer<bool, SaveInvoiceFailure>(_setLoaded),
TypedReducer<bool, SaveInvoiceSuccess>(_setLoaded),
TypedReducer<bool, AddInvoiceSuccess>(_setLoaded),
TypedReducer<bool, ArchiveInvoiceRequest>(_setLoading),
TypedReducer<bool, ArchiveInvoiceSuccess>(_setLoaded),
TypedReducer<bool, ArchiveInvoiceFailure>(_setLoaded),
TypedReducer<bool, DeleteInvoiceRequest>(_setLoading),
TypedReducer<bool, DeleteInvoiceSuccess>(_setLoaded),
TypedReducer<bool, DeleteInvoiceFailure>(_setLoaded),
TypedReducer<bool, RestoreInvoiceRequest>(_setLoading),
TypedReducer<bool, RestoreInvoiceSuccess>(_setLoaded),
TypedReducer<bool, RestoreInvoiceFailure>(_setLoaded),
]);
bool _setLoading(bool state, action) {
print('set loading to true');
return true;
}
bool _setLoaded(bool state, action) {
print('set loading to false');
return false;
}

View File

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:invoiceninja/redux/app/app_actions.dart';
import 'package:invoiceninja/redux/app/app_state.dart';
class LoadStateRequest {
@ -22,7 +23,7 @@ class UserLoginLoaded {
UserLoginLoaded(this.email, this.password, this.url, this.secret);
}
class UserLoginRequest {
class UserLoginRequest implements StartLoading {
final Completer completer;
final String email;
final String password;
@ -32,9 +33,9 @@ class UserLoginRequest {
UserLoginRequest(this.completer, this.email, this.password, this.url, this.secret);
}
class UserLoginSuccess {}
class UserLoginSuccess implements StopLoading {}
class UserLoginFailure {
class UserLoginFailure implements StopLoading {
final String error;
UserLoginFailure(this.error);

View File

@ -4,16 +4,16 @@ import 'package:invoiceninja/data/models/models.dart';
import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja/redux/app/app_actions.dart';
class LoadClientsAction {
class LoadClients {
final Completer completer;
final bool force;
LoadClientsAction([this.completer, this.force = false]);
LoadClients([this.completer, this.force = false]);
}
class LoadClientsRequest {}
class LoadClientsRequest implements StartLoading {}
class LoadClientsFailure {
class LoadClientsFailure implements StopLoading {
final dynamic error;
LoadClientsFailure(this.error);
@ -23,7 +23,7 @@ class LoadClientsFailure {
}
}
class LoadClientsSuccess implements PersistData {
class LoadClientsSuccess implements StopLoading, PersistData {
final BuiltList<ClientEntity> clients;
LoadClientsSuccess(this.clients);
@ -38,74 +38,74 @@ class SelectClientAction {
SelectClientAction(this.client);
}
class SaveClientRequest {
class SaveClientRequest implements StartLoading {
final Completer completer;
final ClientEntity client;
SaveClientRequest(this.completer, this.client);
}
class SaveClientSuccess implements PersistData {
class SaveClientSuccess implements StopLoading, PersistData {
final ClientEntity client;
SaveClientSuccess(this.client);
}
class SaveClientFailure {
class SaveClientFailure implements StopLoading {
final String error;
SaveClientFailure (this.error);
}
class ArchiveClientRequest {
class ArchiveClientRequest implements StartLoading {
final Completer completer;
final int clientId;
ArchiveClientRequest(this.completer, this.clientId);
}
class ArchiveClientSuccess implements PersistData {
class ArchiveClientSuccess implements StopLoading, PersistData {
final ClientEntity client;
ArchiveClientSuccess(this.client);
}
class ArchiveClientFailure {
class ArchiveClientFailure implements StopLoading {
final ClientEntity client;
ArchiveClientFailure(this.client);
}
class DeleteClientRequest {
class DeleteClientRequest implements StartLoading {
final Completer completer;
final int clientId;
DeleteClientRequest(this.completer, this.clientId);
}
class DeleteClientSuccess implements PersistData {
class DeleteClientSuccess implements StopLoading, PersistData {
final ClientEntity client;
DeleteClientSuccess(this.client);
}
class DeleteClientFailure {
class DeleteClientFailure implements StopLoading {
final ClientEntity client;
DeleteClientFailure(this.client);
}
class RestoreClientRequest {
class RestoreClientRequest implements StartLoading {
final Completer completer;
final int clientId;
RestoreClientRequest(this.completer, this.clientId);
}
class RestoreClientSuccess implements PersistData {
class RestoreClientSuccess implements StopLoading, PersistData {
final ClientEntity client;
RestoreClientSuccess(this.client);
}
class RestoreClientFailure {
class RestoreClientFailure implements StopLoading {
final ClientEntity client;
RestoreClientFailure(this.client);
}
class AddClientSuccess implements PersistData {
class AddClientSuccess implements StopLoading, PersistData {
final ClientEntity client;
AddClientSuccess(this.client);
}

View File

@ -15,7 +15,7 @@ List<Middleware<AppState>> createStoreClientsMiddleware([
final restoreClient = _restoreClient(repository);
return [
TypedMiddleware<AppState, LoadClientsAction>(loadClients),
TypedMiddleware<AppState, LoadClients>(loadClients),
TypedMiddleware<AppState, SaveClientRequest>(saveClient),
TypedMiddleware<AppState, ArchiveClientRequest>(archiveClient),
TypedMiddleware<AppState, DeleteClientRequest>(deleteClient),

View File

@ -10,9 +10,9 @@ class LoadDashboardAction {
LoadDashboardAction([this.completer, this.force = false]);
}
class LoadDashboardRequest {}
class LoadDashboardRequest implements StartLoading {}
class LoadDashboardFailure {
class LoadDashboardFailure implements StopLoading {
final dynamic error;
LoadDashboardFailure(this.error);
@ -23,7 +23,7 @@ class LoadDashboardFailure {
}
}
class LoadDashboardSuccess implements PersistData {
class LoadDashboardSuccess implements StopLoading, PersistData {
final DashboardEntity data;
LoadDashboardSuccess(this.data);

View File

@ -37,7 +37,7 @@ Middleware<AppState> _createLoadDashboard(DashboardRepository repository) {
action.completer.complete(null);
}
if (state.clientState.isStale) {
store.dispatch(LoadClientsAction());
store.dispatch(LoadClients());
}
}
).catchError((error) => store.dispatch(LoadDashboardFailure(error)));

View File

@ -4,16 +4,16 @@ import 'package:invoiceninja/data/models/models.dart';
import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja/redux/app/app_actions.dart';
class LoadInvoicesAction {
class LoadInvoices {
final Completer completer;
final bool force;
LoadInvoicesAction([this.completer, this.force = false]);
LoadInvoices([this.completer, this.force = false]);
}
class LoadInvoicesRequest {}
class LoadInvoicesRequest implements StartLoading {}
class LoadInvoicesFailure {
class LoadInvoicesFailure implements StopLoading {
final dynamic error;
LoadInvoicesFailure(this.error);
@ -23,7 +23,7 @@ class LoadInvoicesFailure {
}
}
class LoadInvoicesSuccess implements PersistData {
class LoadInvoicesSuccess implements StopLoading, PersistData {
final BuiltList<InvoiceEntity> invoices;
LoadInvoicesSuccess(this.invoices);
@ -38,74 +38,74 @@ class SelectInvoiceAction {
SelectInvoiceAction(this.invoice);
}
class SaveInvoiceRequest {
class SaveInvoiceRequest implements StartLoading {
final Completer completer;
final InvoiceEntity invoice;
SaveInvoiceRequest(this.completer, this.invoice);
}
class SaveInvoiceSuccess implements PersistData {
class SaveInvoiceSuccess implements StopLoading, PersistData {
final InvoiceEntity invoice;
SaveInvoiceSuccess(this.invoice);
}
class SaveInvoiceFailure {
class SaveInvoiceFailure implements StopLoading {
final String error;
SaveInvoiceFailure (this.error);
}
class ArchiveInvoiceRequest {
class ArchiveInvoiceRequest implements StartLoading {
final Completer completer;
final int invoiceId;
ArchiveInvoiceRequest(this.completer, this.invoiceId);
}
class ArchiveInvoiceSuccess implements PersistData {
class ArchiveInvoiceSuccess implements StopLoading, PersistData {
final InvoiceEntity invoice;
ArchiveInvoiceSuccess(this.invoice);
}
class ArchiveInvoiceFailure {
class ArchiveInvoiceFailure implements StopLoading {
final InvoiceEntity invoice;
ArchiveInvoiceFailure(this.invoice);
}
class DeleteInvoiceRequest {
class DeleteInvoiceRequest implements StartLoading {
final Completer completer;
final int invoiceId;
DeleteInvoiceRequest(this.completer, this.invoiceId);
}
class DeleteInvoiceSuccess implements PersistData {
class DeleteInvoiceSuccess implements StopLoading, PersistData {
final InvoiceEntity invoice;
DeleteInvoiceSuccess(this.invoice);
}
class DeleteInvoiceFailure {
class DeleteInvoiceFailure implements StopLoading {
final InvoiceEntity invoice;
DeleteInvoiceFailure(this.invoice);
}
class RestoreInvoiceRequest {
class RestoreInvoiceRequest implements StartLoading {
final Completer completer;
final int invoiceId;
RestoreInvoiceRequest(this.completer, this.invoiceId);
}
class RestoreInvoiceSuccess implements PersistData {
class RestoreInvoiceSuccess implements StopLoading, PersistData {
final InvoiceEntity invoice;
RestoreInvoiceSuccess(this.invoice);
}
class RestoreInvoiceFailure {
class RestoreInvoiceFailure implements StopLoading {
final InvoiceEntity invoice;
RestoreInvoiceFailure(this.invoice);
}
class AddInvoiceSuccess implements PersistData {
class AddInvoiceSuccess implements StopLoading, PersistData {
final InvoiceEntity invoice;
AddInvoiceSuccess(this.invoice);
}

View File

@ -15,7 +15,7 @@ List<Middleware<AppState>> createStoreInvoicesMiddleware([
final restoreInvoice = _restoreInvoice(repository);
return [
TypedMiddleware<AppState, LoadInvoicesAction>(loadInvoices),
TypedMiddleware<AppState, LoadInvoices>(loadInvoices),
TypedMiddleware<AppState, SaveInvoiceRequest>(saveInvoice),
TypedMiddleware<AppState, ArchiveInvoiceRequest>(archiveInvoice),
TypedMiddleware<AppState, DeleteInvoiceRequest>(deleteInvoice),
@ -128,7 +128,7 @@ Middleware<AppState> _loadInvoices(InvoiceRepository repository) {
action.completer.complete(null);
}
if (state.clientState.isStale) {
store.dispatch(LoadClientsAction());
store.dispatch(LoadClients());
}
}).catchError((error) => store.dispatch(LoadInvoicesFailure(error)));

View File

@ -11,9 +11,9 @@ class LoadProducts {
LoadProducts([this.completer, this.force = false]);
}
class LoadProductsRequest {}
class LoadProductsRequest implements StartLoading {}
class LoadProductsFailure {
class LoadProductsFailure implements StopLoading {
final dynamic error;
LoadProductsFailure(this.error);
@ -23,7 +23,7 @@ class LoadProductsFailure {
}
}
class LoadProductsSuccess implements PersistData {
class LoadProductsSuccess implements PersistData, StopLoading {
final BuiltList<ProductEntity> products;
LoadProductsSuccess(this.products);
@ -39,78 +39,78 @@ class EditProduct {
EditProduct({this.product, this.context});
}
class SaveProductRequest {
class SaveProductRequest implements StartLoading {
final Completer completer;
final ProductEntity product;
SaveProductRequest(this.completer, this.product);
}
class SaveProductSuccess implements PersistData {
class SaveProductSuccess implements StopLoading, PersistData {
final ProductEntity product;
SaveProductSuccess(this.product);
}
class SaveProductFailure {
class AddProductSuccess implements StopLoading, PersistData {
final ProductEntity product;
AddProductSuccess(this.product);
}
class SaveProductFailure implements StopLoading {
final String error;
SaveProductFailure (this.error);
}
class ArchiveProductRequest {
class ArchiveProductRequest implements StartLoading {
final Completer completer;
final int productId;
ArchiveProductRequest(this.completer, this.productId);
}
class ArchiveProductSuccess implements PersistData {
class ArchiveProductSuccess implements StopLoading, PersistData {
final ProductEntity product;
ArchiveProductSuccess(this.product);
}
class ArchiveProductFailure {
class ArchiveProductFailure implements StopLoading {
final ProductEntity product;
ArchiveProductFailure(this.product);
}
class DeleteProductRequest {
class DeleteProductRequest implements StartLoading {
final Completer completer;
final int productId;
DeleteProductRequest(this.completer, this.productId);
}
class DeleteProductSuccess implements PersistData {
class DeleteProductSuccess implements StopLoading, PersistData {
final ProductEntity product;
DeleteProductSuccess(this.product);
}
class DeleteProductFailure {
class DeleteProductFailure implements StopLoading {
final ProductEntity product;
DeleteProductFailure(this.product);
}
class RestoreProductRequest {
class RestoreProductRequest implements StartLoading {
final Completer completer;
final int productId;
RestoreProductRequest(this.completer, this.productId);
}
class RestoreProductSuccess implements PersistData {
class RestoreProductSuccess implements StopLoading, PersistData {
final ProductEntity product;
RestoreProductSuccess(this.product);
}
class RestoreProductFailure {
class RestoreProductFailure implements StopLoading {
final ProductEntity product;
RestoreProductFailure(this.product);
}
class AddProductSuccess implements PersistData {
final ProductEntity product;
AddProductSuccess(this.product);
}
class SearchProducts {
final String search;

View File

@ -54,7 +54,7 @@ class ClientListVM {
static ClientListVM fromStore(Store<AppState> store) {
Future<Null> _handleRefresh(BuildContext context) {
final Completer<Null> completer = new Completer<Null>();
store.dispatch(LoadClientsAction(completer, true));
store.dispatch(LoadClients(completer, true));
return completer.future.then((_) {
Scaffold.of(context).showSnackBar(SnackBar(
content: SnackBarRow(

View File

@ -55,7 +55,7 @@ class InvoiceListVM {
static InvoiceListVM fromStore(Store<AppState> store) {
Future<Null> _handleRefresh(BuildContext context) {
final Completer<Null> completer = new Completer<Null>();
store.dispatch(LoadInvoicesAction(completer, true));
store.dispatch(LoadInvoices(completer, true));
return completer.future.then((_) {
Scaffold.of(context).showSnackBar(SnackBar(
content: SnackBarRow(