diff --git a/suite-common/trading/src/middlewares/tradingMiddleware.ts b/suite-common/trading/src/middlewares/tradingMiddleware.ts index 6f3df71328f..7d9b45ee680 100644 --- a/suite-common/trading/src/middlewares/tradingMiddleware.ts +++ b/suite-common/trading/src/middlewares/tradingMiddleware.ts @@ -4,29 +4,35 @@ import { tradingBuyActions } from '../actions/buyActions'; import { tradingActions } from '../actions/tradingActions'; import { INVITY_API_RELOAD_DATA_AFTER_MS } from '../constants'; import { invityAPI } from '../invityAPI'; -import { TradingRootState, selectState } from '../selectors/tradingSelectors'; +import { + TradingRootState, + selectTradingBuy, + selectTradingInfo, + selectTradingLoadingAndTimestamp, + selectTradingSelectedAccount, + selectTradingSettingEnviroment, +} from '../selectors/tradingSelectors'; import { buyThunks } from '../thunks/buyThunks'; /** * In the Sell and Swap section an account can be changed by a user in the select */ -export const getAccountAccordingToRoute = (state: TradingRootState) => { +export const getAccountAccordingToSection = (state: TradingRootState) => { const { - selectedAccount: { account }, + account, // accounts, - } = state.wallet; + } = selectTradingSelectedAccount(state); return account; }; export const tradingMiddleware = createMiddleware(async (action, { dispatch, next, getState }) => { - const state = selectState(getState()); - const { isLoading, lastLoadedTimestamp } = state.wallet.trading; + const { isLoading, lastLoadedTimestamp } = selectTradingLoadingAndTimestamp(getState()); if (action.type === tradingActions.loadInvityData.type) { - const account = getAccountAccordingToRoute(state); - const { platforms, coins } = state.wallet.trading.info; - const { buyInfo } = state.wallet.trading.buy; + const account = getAccountAccordingToSection(getState()); + const { platforms, coins } = selectTradingInfo(getState()); + const { buyInfo } = selectTradingBuy(getState()); const currentAccountDescriptor = invityAPI.getCurrentAccountDescriptor(); const isDifferentAccount = currentAccountDescriptor !== account?.descriptor; @@ -39,7 +45,7 @@ export const tradingMiddleware = createMiddleware(async (action, { dispatch, nex ) { dispatch(tradingActions.setLoading(true)); - const { invityServerEnvironment } = state.suite.settings.debug; + const invityServerEnvironment = selectTradingSettingEnviroment(getState()); if (invityServerEnvironment) { invityAPI.setInvityServersEnvironment(invityServerEnvironment); } diff --git a/suite-common/trading/src/selectors/tradingSelectors.ts b/suite-common/trading/src/selectors/tradingSelectors.ts index e4841b28e2c..e9a45593f34 100644 --- a/suite-common/trading/src/selectors/tradingSelectors.ts +++ b/suite-common/trading/src/selectors/tradingSelectors.ts @@ -1,4 +1,3 @@ -import { Route } from '@suite-common/suite-types/src/route'; import { Account, SelectedAccountStatus } from '@suite-common/wallet-types'; import { AddressDisplayOptions } from '@suite-common/wallet-types/src/settings'; @@ -20,13 +19,22 @@ export type TradingRootState = { }; }; }; - router: { - url: string; - pathname: string; - route: { - name: Route['name']; - }; - }; }; -export const selectState = (state: TradingRootState) => state; +export const selectTradingLoadingAndTimestamp = (state: TradingRootState) => ({ + isLoading: state.wallet.trading.isLoading, + lastLoadedTimestamp: state.wallet.trading.lastLoadedTimestamp, +}); + +export const selectTradingInfo = (state: TradingRootState) => state.wallet.trading.info; + +export const selectTradingBuy = (state: TradingRootState) => state.wallet.trading.buy; + +export const selectTradingSelectedAccount = (state: TradingRootState) => + state.wallet.selectedAccount; + +export const selectTradingSettingEnviroment = (state: TradingRootState) => + state.suite.settings.debug.invityServerEnvironment; + +export const selectTradingSettingAddressDisplayType = (state: TradingRootState) => + state.suite.settings.addressDisplayType; diff --git a/suite-common/trading/src/thunks/tradingThunks.ts b/suite-common/trading/src/thunks/tradingThunks.ts index c716d1ca32d..d7a7df0f60c 100644 --- a/suite-common/trading/src/thunks/tradingThunks.ts +++ b/suite-common/trading/src/thunks/tradingThunks.ts @@ -5,7 +5,7 @@ import { Account, AddressDisplayOptions } from '@suite-common/wallet-types'; import { tradingBuyActions } from '../actions/buyActions'; import { tradingActions } from '../actions/tradingActions'; -import { selectState } from '../selectors/tradingSelectors'; +import { selectTradingSettingAddressDisplayType } from '../selectors/tradingSelectors'; import { getUnusedAddressFromAccount } from '../utils'; const TRADING_COMMON_PREFIX = '@trading-common/thunk'; @@ -33,7 +33,7 @@ const verifyAddressThunk = createThunk( dispatch(tradingActions.setModalAccountKey(account.key)); - const { addressDisplayType } = selectState(getState()).suite.settings; + const addressDisplayType = selectTradingSettingAddressDisplayType(getState()); const { useEmptyPassphrase, connected, available } = device;