Slide to delete
This commit is contained in:
parent
a3cd75fa99
commit
b1364d005a
|
|
@ -15,7 +15,7 @@ import 'package:invoiceninja/redux/dashboard/dashboard_middleware.dart';
|
||||||
import 'package:invoiceninja/redux/product/product_actions.dart';
|
import 'package:invoiceninja/redux/product/product_actions.dart';
|
||||||
import 'package:invoiceninja/redux/product/product_middleware.dart';
|
import 'package:invoiceninja/redux/product/product_middleware.dart';
|
||||||
import 'package:invoiceninja/utils/localization.dart';
|
import 'package:invoiceninja/utils/localization.dart';
|
||||||
import 'package:redux_logging/redux_logging.dart';
|
//import 'package:redux_logging/redux_logging.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
final store = Store<AppState>(
|
final store = Store<AppState>(
|
||||||
|
|
@ -26,7 +26,7 @@ void main() {
|
||||||
..addAll(createStoreDashboardMiddleware())
|
..addAll(createStoreDashboardMiddleware())
|
||||||
..addAll(createStoreProductsMiddleware())
|
..addAll(createStoreProductsMiddleware())
|
||||||
..addAll([
|
..addAll([
|
||||||
LoggingMiddleware.printer(),
|
//LoggingMiddleware.printer(),
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,8 @@ class ArchiveProductSuccess {
|
||||||
ArchiveProductSuccess(this.product);
|
ArchiveProductSuccess(this.product);
|
||||||
}
|
}
|
||||||
class ArchiveProductFailure {
|
class ArchiveProductFailure {
|
||||||
final int productId;
|
final ProductEntity product;
|
||||||
ArchiveProductFailure(this.productId);
|
ArchiveProductFailure(this.product);
|
||||||
}
|
}
|
||||||
|
|
||||||
class DeleteProductRequest {
|
class DeleteProductRequest {
|
||||||
|
|
@ -72,8 +72,8 @@ class DeleteProductSuccess {
|
||||||
DeleteProductSuccess(this.product);
|
DeleteProductSuccess(this.product);
|
||||||
}
|
}
|
||||||
class DeleteProductFailure {
|
class DeleteProductFailure {
|
||||||
final int productId;
|
final ProductEntity product;
|
||||||
DeleteProductFailure(this.productId);
|
DeleteProductFailure(this.product);
|
||||||
}
|
}
|
||||||
|
|
||||||
class RestoreProductRequest {
|
class RestoreProductRequest {
|
||||||
|
|
@ -86,8 +86,8 @@ class RestoreProductSuccess {
|
||||||
RestoreProductSuccess(this.product);
|
RestoreProductSuccess(this.product);
|
||||||
}
|
}
|
||||||
class RestoreProductFailure {
|
class RestoreProductFailure {
|
||||||
final int productId;
|
final ProductEntity product;
|
||||||
RestoreProductFailure(this.productId);
|
RestoreProductFailure(this.product);
|
||||||
}
|
}
|
||||||
|
|
||||||
class AddProductSuccess {
|
class AddProductSuccess {
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,15 @@ List<Middleware<AppState>> createStoreProductsMiddleware([
|
||||||
|
|
||||||
Middleware<AppState> _archiveProduct(ProductsRepository repository) {
|
Middleware<AppState> _archiveProduct(ProductsRepository repository) {
|
||||||
return (Store<AppState> store, action, NextDispatcher next) {
|
return (Store<AppState> store, action, NextDispatcher next) {
|
||||||
var product = store.state.productState().map[action.productId];
|
var origProduct = store.state.productState().map[action.productId];
|
||||||
repository
|
repository
|
||||||
.saveData(store.state.selectedCompany(), store.state.authState,
|
.saveData(store.state.selectedCompany(), store.state.authState,
|
||||||
product, EntityAction.archive)
|
origProduct, EntityAction.archive)
|
||||||
.then((product) {
|
.then((product) {
|
||||||
store.dispatch(ArchiveProductSuccess(product));
|
store.dispatch(ArchiveProductSuccess(product));
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
print(error);
|
print(error);
|
||||||
store.dispatch(ArchiveProductFailure(action.productId));
|
store.dispatch(ArchiveProductFailure(origProduct));
|
||||||
});
|
});
|
||||||
|
|
||||||
next(action);
|
next(action);
|
||||||
|
|
@ -48,15 +48,15 @@ Middleware<AppState> _archiveProduct(ProductsRepository repository) {
|
||||||
|
|
||||||
Middleware<AppState> _deleteProduct(ProductsRepository repository) {
|
Middleware<AppState> _deleteProduct(ProductsRepository repository) {
|
||||||
return (Store<AppState> store, action, NextDispatcher next) {
|
return (Store<AppState> store, action, NextDispatcher next) {
|
||||||
var product = store.state.productState().map[action.productId];
|
var origProduct = store.state.productState().map[action.productId];
|
||||||
repository
|
repository
|
||||||
.saveData(store.state.selectedCompany(), store.state.authState,
|
.saveData(store.state.selectedCompany(), store.state.authState,
|
||||||
product, EntityAction.delete)
|
origProduct, EntityAction.delete)
|
||||||
.then((product) {
|
.then((product) {
|
||||||
store.dispatch(DeleteProductSuccess(product));
|
store.dispatch(DeleteProductSuccess(product));
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
print(error);
|
print(error);
|
||||||
store.dispatch(DeleteProductFailure(action.productId));
|
store.dispatch(DeleteProductFailure(origProduct));
|
||||||
});
|
});
|
||||||
|
|
||||||
next(action);
|
next(action);
|
||||||
|
|
@ -65,6 +65,17 @@ Middleware<AppState> _deleteProduct(ProductsRepository repository) {
|
||||||
|
|
||||||
Middleware<AppState> _restoreProduct(ProductsRepository repository) {
|
Middleware<AppState> _restoreProduct(ProductsRepository repository) {
|
||||||
return (Store<AppState> store, action, NextDispatcher next) {
|
return (Store<AppState> store, action, NextDispatcher next) {
|
||||||
|
var origProduct = store.state.productState().map[action.productId];
|
||||||
|
repository
|
||||||
|
.saveData(store.state.selectedCompany(), store.state.authState,
|
||||||
|
origProduct, EntityAction.restore)
|
||||||
|
.then((product) {
|
||||||
|
store.dispatch(RestoreProductSuccess(product));
|
||||||
|
}).catchError((error) {
|
||||||
|
print(error);
|
||||||
|
store.dispatch(RestoreProductFailure(origProduct));
|
||||||
|
});
|
||||||
|
|
||||||
next(action);
|
next(action);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,13 @@ final productsReducer = combineReducers<ProductState>([
|
||||||
TypedReducer<ProductState, ArchiveProductSuccess>(_archiveProductSuccess),
|
TypedReducer<ProductState, ArchiveProductSuccess>(_archiveProductSuccess),
|
||||||
TypedReducer<ProductState, ArchiveProductFailure>(_archiveProductFailure),
|
TypedReducer<ProductState, ArchiveProductFailure>(_archiveProductFailure),
|
||||||
|
|
||||||
|
TypedReducer<ProductState, DeleteProductRequest>(_deleteProductRequest),
|
||||||
TypedReducer<ProductState, DeleteProductSuccess>(_deleteProductSuccess),
|
TypedReducer<ProductState, DeleteProductSuccess>(_deleteProductSuccess),
|
||||||
|
TypedReducer<ProductState, DeleteProductFailure>(_deleteProductFailure),
|
||||||
|
|
||||||
|
TypedReducer<ProductState, RestoreProductRequest>(_restoreProductRequest),
|
||||||
TypedReducer<ProductState, RestoreProductSuccess>(_restoreProductSuccess),
|
TypedReducer<ProductState, RestoreProductSuccess>(_restoreProductSuccess),
|
||||||
|
TypedReducer<ProductState, RestoreProductFailure>(_restoreProductFailure),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
ProductState _archiveProductRequest(ProductState productState, ArchiveProductRequest action) {
|
ProductState _archiveProductRequest(ProductState productState, ArchiveProductRequest action) {
|
||||||
|
|
@ -73,8 +78,16 @@ ProductState _archiveProductSuccess(ProductState productState, ArchiveProductSuc
|
||||||
|
|
||||||
ProductState _archiveProductFailure(ProductState productState, ArchiveProductFailure action) {
|
ProductState _archiveProductFailure(ProductState productState, ArchiveProductFailure action) {
|
||||||
return productState.rebuild((b) => b
|
return productState.rebuild((b) => b
|
||||||
..map[action.productId].rebuild((c) => c
|
..map[action.product.id] = action.product
|
||||||
..archivedAt = null
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProductState _deleteProductRequest(ProductState productState, DeleteProductRequest action) {
|
||||||
|
var product = productState.map[action.productId];
|
||||||
|
return productState.rebuild((b) => b
|
||||||
|
..map[action.productId] = product.rebuild((b) => b
|
||||||
|
..archivedAt = DateTime.now().millisecondsSinceEpoch
|
||||||
|
..isDeleted = true
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -85,12 +98,36 @@ ProductState _deleteProductSuccess(ProductState productState, DeleteProductSucce
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProductState _deleteProductFailure(ProductState productState, DeleteProductFailure action) {
|
||||||
|
return productState.rebuild((b) => b
|
||||||
|
..map[action.product.id] = action.product
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ProductState _restoreProductRequest(ProductState productState, RestoreProductRequest action) {
|
||||||
|
var product = productState.map[action.productId];
|
||||||
|
return productState.rebuild((b) => b
|
||||||
|
..map[action.productId] = product.rebuild((b) => b
|
||||||
|
..archivedAt = null
|
||||||
|
..isDeleted = false
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
ProductState _restoreProductSuccess(ProductState productState, RestoreProductSuccess action) {
|
ProductState _restoreProductSuccess(ProductState productState, RestoreProductSuccess action) {
|
||||||
return productState.rebuild((b) => b
|
return productState.rebuild((b) => b
|
||||||
..map[action.product.id] = action.product
|
..map[action.product.id] = action.product
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProductState _restoreProductFailure(ProductState productState, RestoreProductFailure action) {
|
||||||
|
return productState.rebuild((b) => b
|
||||||
|
..map[action.product.id] = action.product
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ProductState _addProduct(
|
ProductState _addProduct(
|
||||||
ProductState productState, AddProductSuccess action) {
|
ProductState productState, AddProductSuccess action) {
|
||||||
return productState.rebuild((b) => b
|
return productState.rebuild((b) => b
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue