From 6d0568cd5d42d3f3b4da424d192790f5ca5bd763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0?= Date: Tue, 3 Apr 2018 13:39:10 +0800 Subject: [PATCH 1/3] clear market' --- src/modules/market.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/market.js b/src/modules/market.js index 0f9ecc9..8e051d8 100644 --- a/src/modules/market.js +++ b/src/modules/market.js @@ -53,6 +53,7 @@ const actions = { assetsIds.forEach(id => { console.log('unsubscribing: ', id); API.Market.unsubscribeFromExchangeRate(id); + API.Market.unsubscribeFromMarkets(); }); }, From f76e5ce19efc61e7eff99eba79a5d1f380d66fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0?= Date: Tue, 3 Apr 2018 15:58:47 +0800 Subject: [PATCH 2/3] better transactions handling --- src/actions/transactions.js | 7 ++++++- src/modules/transactions.js | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/actions/transactions.js b/src/actions/transactions.js index e885b19..9444ab8 100644 --- a/src/actions/transactions.js +++ b/src/actions/transactions.js @@ -28,6 +28,7 @@ export const fetchComissions = async ({ commit }) => { export const createOrdersFromDistribution = async (store) => { const { commit, rootGetters, getters } = store; + if (getters.areTransactionsProcessing) return; const distribution = getters.getPendingDistribution; if (!distribution) return; const userId = rootGetters['account/getAccountUserId']; @@ -57,7 +58,6 @@ export const createOrdersFromDistribution = async (store) => { } }); - // const update = calcPortfolioDistributionChange(baseBalances, distribution); const orders = API.Market.generateOrders({ userId, @@ -67,6 +67,8 @@ export const createOrdersFromDistribution = async (store) => { }); console.log(orders); + // if sell finished, only update buy orders + commit(types.UPDATE_PENDING_ORDERS, { orders }); }; @@ -87,6 +89,7 @@ export const processPendingOrders = async (store) => { const keys = rootGetters['account/getKeys']; if (!keys) { commit(types.PROCESS_PENDING_ORDERS_ERROR); + createOrdersFromDistribution(store); return { success: false, error: 'Account is locked' @@ -99,6 +102,7 @@ export const processPendingOrders = async (store) => { keys }); if (!sellResult.success) { commit(types.PROCESS_PENDING_ORDERS_ERROR); + createOrdersFromDistribution(store); return { success: false, error: sellResult.error @@ -114,6 +118,7 @@ export const processPendingOrders = async (store) => { console.log(buyResult); if (!buyResult.success) { commit(types.PROCESS_PENDING_ORDERS_ERROR); + createOrdersFromDistribution(store); return { success: false, error: buyResult.error diff --git a/src/modules/transactions.js b/src/modules/transactions.js index bd63cc0..bd9f7b3 100644 --- a/src/modules/transactions.js +++ b/src/modules/transactions.js @@ -10,6 +10,7 @@ const initialState = { pending: false, error: null, transactionsProcessing: false, + sellOrdersProcessed: false, fees: { order: { fee: 0 @@ -52,6 +53,7 @@ const mutations = { state.transactionsProcessing = false; }, [types.UPDATE_PENDING_ORDERS](state, { orders }) { + if (state.sellOrdersProcessed) orders.sellOrders = []; Vue.set(state, 'pendingOrders', orders); }, [types.SET_PENDING_DISTRIBUTION](state, { distribution }) { @@ -60,6 +62,7 @@ const mutations = { [types.REMOVE_PENDING_DISTRIBUTION](state) { state.pendingDistributionUpdate = null; state.pendingOrders = {}; + state.sellOrdersProcessed = false; }, [types.PROCESS_PENDING_ORDERS_REQUEST](state) { state.transactionsProcessing = true; @@ -78,6 +81,7 @@ const mutations = { }, [types.PROCESS_PENDING_ORDERS_SELL_COMPLETE](state) { state.pendingOrders.sellOrders = []; + state.sellOrdersProcessed = true; } }; From 6aaa4f3514e9cb8bde5143852def2334cea09411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0?= Date: Wed, 4 Apr 2018 13:26:16 +0800 Subject: [PATCH 3/3] refactor --- src/actions/transactions.js | 17 +++++++++++------ src/modules/transactions.js | 11 ++++++++--- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/actions/transactions.js b/src/actions/transactions.js index 9444ab8..75ba3c3 100644 --- a/src/actions/transactions.js +++ b/src/actions/transactions.js @@ -83,13 +83,20 @@ export const removePendingDistribution = (store) => { commit(types.REMOVE_PENDING_DISTRIBUTION); }; + +export const handleOrdersError = (store) => { + const { commit } = store; + commit(types.PROCESS_PENDING_ORDERS_ERROR); + createOrdersFromDistribution(store); +}; + + export const processPendingOrders = async (store) => { const { getters, commit, rootGetters } = store; commit(types.PROCESS_PENDING_ORDERS_REQUEST); const keys = rootGetters['account/getKeys']; if (!keys) { - commit(types.PROCESS_PENDING_ORDERS_ERROR); - createOrdersFromDistribution(store); + handleOrdersError(store); return { success: false, error: 'Account is locked' @@ -101,8 +108,7 @@ export const processPendingOrders = async (store) => { orders: pendingOrders.sellOrders, keys }); if (!sellResult.success) { - commit(types.PROCESS_PENDING_ORDERS_ERROR); - createOrdersFromDistribution(store); + handleOrdersError(store); return { success: false, error: sellResult.error @@ -117,8 +123,7 @@ export const processPendingOrders = async (store) => { }); console.log(buyResult); if (!buyResult.success) { - commit(types.PROCESS_PENDING_ORDERS_ERROR); - createOrdersFromDistribution(store); + handleOrdersError(store); return { success: false, error: buyResult.error diff --git a/src/modules/transactions.js b/src/modules/transactions.js index bd9f7b3..7c15af8 100644 --- a/src/modules/transactions.js +++ b/src/modules/transactions.js @@ -5,7 +5,10 @@ import * as actions from '../actions/transactions'; const initialState = { pendingDistributionUpdate: null, - pendingOrders: {}, + pendingOrders: { + sellOrders: [], + buyOrders: [] + }, pendingTransfer: false, pending: false, error: null, @@ -24,7 +27,8 @@ const initialState = { const getters = { getPendingOrders: state => state.pendingOrders, - hasPendingOrders: state => state.pendingOrders.sellOrders || state.pendingOrders.buyOrders, + hasPendingOrders: state => state.pendingOrders.sellOrders.length + || state.pendingOrders.buyOrders.length, getPendingDistribution: state => state.pendingDistributionUpdate, hasPendingTransfer: state => state.pendingTransfer !== false, areTransactionsProcessing: state => state.transactionsProcessing, @@ -61,7 +65,8 @@ const mutations = { }, [types.REMOVE_PENDING_DISTRIBUTION](state) { state.pendingDistributionUpdate = null; - state.pendingOrders = {}; + state.pendingOrders.sellOrders = []; + state.pendingOrders.buyOrders = []; state.sellOrdersProcessed = false; }, [types.PROCESS_PENDING_ORDERS_REQUEST](state) {