aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/redux/reducer.ts
diff options
context:
space:
mode:
authorSteve Klebanoff <steve.klebanoff@gmail.com>2018-11-01 00:14:50 +0800
committerSteve Klebanoff <steve.klebanoff@gmail.com>2018-11-01 00:14:50 +0800
commitd6755472087af76982779728db7424b1171a1b47 (patch)
tree8b9d8b10f1e4dd6ce6aacc02e27a2845414c5cdc /packages/instant/src/redux/reducer.ts
parentd938ba46061fc8d0682f356ea9aba16535466455 (diff)
downloaddexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar.gz
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar.bz2
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar.lz
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar.xz
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.tar.zst
dexon-sol-tools-d6755472087af76982779728db7424b1171a1b47.zip
Explicit actions for setting different order states
This allows us to dispatch updates with less syntax, and allows us to not have to send in progress info when setting failure and success
Diffstat (limited to 'packages/instant/src/redux/reducer.ts')
-rw-r--r--packages/instant/src/redux/reducer.ts64
1 files changed, 62 insertions, 2 deletions
diff --git a/packages/instant/src/redux/reducer.ts b/packages/instant/src/redux/reducer.ts
index dd9403052..11980066b 100644
--- a/packages/instant/src/redux/reducer.ts
+++ b/packages/instant/src/redux/reducer.ts
@@ -83,11 +83,71 @@ export const reducer = (state: State = INITIAL_STATE, action: Action): State =>
latestBuyQuote: undefined,
quoteRequestState: AsyncProcessState.FAILURE,
};
- case ActionTypes.UPDATE_BUY_ORDER_STATE:
+ case ActionTypes.SET_BUY_ORDER_STATE_NONE:
return {
...state,
- buyOrderState: action.data,
+ buyOrderState: { processState: OrderProcessState.NONE },
+ };
+ case ActionTypes.SET_BUY_ORDER_STATE_VALIDATING:
+ return {
+ ...state,
+ buyOrderState: { processState: OrderProcessState.VALIDATING },
};
+ case ActionTypes.SET_BUY_ORDER_STATE_PROCESSING:
+ const processingData = action.data;
+ const { startTimeUnix, expectedEndTimeUnix } = processingData;
+ return {
+ ...state,
+ buyOrderState: {
+ processState: OrderProcessState.PROCESSING,
+ txHash: processingData.txHash,
+ progress: {
+ startTimeUnix,
+ expectedEndTimeUnix,
+ ended: false,
+ },
+ },
+ };
+ case ActionTypes.SET_BUY_ORDER_STATE_FAILURE:
+ const failureTxHash = action.data;
+ if ('txHash' in state.buyOrderState) {
+ if (state.buyOrderState.txHash === failureTxHash) {
+ const failureProgress = {
+ startTimeUnix: state.buyOrderState.progress.startTimeUnix,
+ expectedEndTimeUnix: state.buyOrderState.progress.expectedEndTimeUnix,
+ ended: true,
+ };
+ return {
+ ...state,
+ buyOrderState: {
+ processState: OrderProcessState.FAILURE,
+ txHash: state.buyOrderState.txHash,
+ progress: failureProgress,
+ },
+ };
+ }
+ }
+ return state;
+ case ActionTypes.SET_BUY_ORDER_STATE_SUCCESS:
+ const successTxHash = action.data;
+ if ('txHash' in state.buyOrderState) {
+ if (state.buyOrderState.txHash === successTxHash) {
+ const successProgress = {
+ startTimeUnix: state.buyOrderState.progress.startTimeUnix,
+ expectedEndTimeUnix: state.buyOrderState.progress.expectedEndTimeUnix,
+ ended: true,
+ };
+ return {
+ ...state,
+ buyOrderState: {
+ processState: OrderProcessState.SUCCESS,
+ txHash: state.buyOrderState.txHash,
+ progress: successProgress,
+ },
+ };
+ }
+ }
+ return state;
case ActionTypes.SET_ERROR_MESSAGE:
return {
...state,