@gongt/ts-stl-client
Version:
34 lines • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const action_1 = require("../action");
const virtual_store_1 = require("../virtual-store");
class PromiseQueue extends virtual_store_1.VirtualStore {
}
exports.PromiseQueue = PromiseQueue;
class PromiseAction extends action_1.ReduxAction {
}
exports.PromiseAction = PromiseAction;
function promiseMiddleware(store) {
return (next) => {
return (action) => {
if (!PromiseAction.is(action)) {
return next(action);
}
const { promise, success, failed } = action.payload;
promise.then((data) => {
store.dispatch(new success(data).toJSON());
}, (e) => {
store.dispatch(new failed(e).toJSON());
});
};
};
}
exports.promiseMiddleware = promiseMiddleware;
class PromisePlugin {
__redux_plugin(redux) {
redux.use(promiseMiddleware);
redux.register(PromiseQueue);
}
}
exports.PromisePlugin = PromisePlugin;
//# sourceMappingURL=promise.js.map