diff --git a/src/botPage/common/symbolApi/index.js b/src/botPage/common/symbolApi/index.js index ef2f1d1035..6ed3269760 100644 --- a/src/botPage/common/symbolApi/index.js +++ b/src/botPage/common/symbolApi/index.js @@ -1,7 +1,7 @@ import ActiveSymbols from './activeSymbols'; import config from '../../common/const'; import { getObjectValue } from '../../../common/utils/tools'; -import { getTokenList } from '../../../common/utils/storageManager'; +import { getTokenList, removeAllTokens } from '../../../common/utils/storageManager'; const noop = () => {}; @@ -44,7 +44,7 @@ export default class _Symbol { constructor(api) { this.api = api; this.initPromise = new Promise(resolve => { - const getActiveSymbolsPromise = () => { + const getActiveSymbolsLogic = () => { this.api.getActiveSymbolsBrief().then(r => { this.activeSymbols = new ActiveSymbols(r.active_symbols); this.api.getAssetIndex().then(r2 => { @@ -53,17 +53,19 @@ export default class _Symbol { }, noop); }, noop); }; - // Authorize when possible for accurate offered symbols, assetindex - const getAuthorisePromise = () => { - const tokenList = getTokenList(); - if (tokenList.length) { - return this.api.authorize(tokenList[0].token); - } - return new Promise(r => r()); - }; - getAuthorisePromise() - .then(() => getActiveSymbolsPromise(), noop) - .catch(() => getActiveSymbolsPromise(), noop); + // Authorize the WS connection when possible for accurate offered Symbols & AssetIndex + const tokenList = getTokenList(); + if (tokenList.length) { + this.api + .authorize(tokenList[0].token) + .then(getActiveSymbolsLogic()) + .catch(() => { + removeAllTokens(); + getActiveSymbolsLogic(); + }); + } else { + getActiveSymbolsLogic(); + } }); } /* eslint-disable class-methods-use-this */ diff --git a/src/botPage/view/blockly/blocks/shared.js b/src/botPage/view/blockly/blocks/shared.js index 753bb8b284..15c2e9ab92 100644 --- a/src/botPage/view/blockly/blocks/shared.js +++ b/src/botPage/view/blockly/blocks/shared.js @@ -3,7 +3,12 @@ import { symbolApi } from '../../shared'; import config from '../../../common/const'; import { generateLiveApiInstance } from '../../../../common/appId'; import { translate } from '../../../../common/i18n'; -import { get as getStorage, set as setStorage, getTokenList } from '../../../../common/utils/storageManager'; +import { + get as getStorage, + set as setStorage, + getTokenList, + removeAllTokens, +} from '../../../../common/utils/storageManager'; let purchaseChoices = [[translate('Click to select'), '']]; @@ -136,7 +141,7 @@ export const dependentFieldMapping = { export const getAvailableDurations = (symbol, selectedContractType) => { const contractsForStore = JSON.parse(getStorage('contractsForStore') || '[]'); - const tokenList = getTokenList(); + let tokenList = getTokenList(); const defaultDurations = [ [translate('Ticks'), 't'], [translate('Seconds'), 's'], @@ -144,13 +149,19 @@ export const getAvailableDurations = (symbol, selectedContractType) => { [translate('Hours'), 'h'], [translate('Days'), 'd'], ]; + const getContractsForSymbolFromApi = async underlyingSymbol => { // Refactor this when reducing WS connections - let api = generateLiveApiInstance(); + const api = generateLiveApiInstance(); // Try to authorize for accurate contracts response if (tokenList.length) { - await api.authorize(tokenList[0].token); + try { + await api.authorize(tokenList[0].token); + } catch (e) { + removeAllTokens(); + tokenList = []; + } } const response = await api.getContractsForSymbol(underlyingSymbol); @@ -176,7 +187,6 @@ export const getAvailableDurations = (symbol, selectedContractType) => { setStorage('contractsForStore', JSON.stringify(contractsForStore)); } api.disconnect(); - api = null; return contractsForSymbol; }; const getDurationsForContract = contractsForSymbol => { diff --git a/src/botPage/view/blockly/index.js b/src/botPage/view/blockly/index.js index 862b613f58..47ec73cead 100644 --- a/src/botPage/view/blockly/index.js +++ b/src/botPage/view/blockly/index.js @@ -448,7 +448,7 @@ Blockly.ContextMenu.show = (e, menuOptions, rtl) => { if (window._elev) { menuOptions.some(option => { if (option.text === Blockly.Msg.HELP) { - option.callback = () => window._elev.open(); // eslint-disable-line no-param-reassign, no-underscore-dangle + option.callback = () => window._elev.openHome(); // eslint-disable-line no-param-reassign, no-underscore-dangle return true; } return false;