From e0d1b829b8aeae3d3828a451aebd4fa4eff77015 Mon Sep 17 00:00:00 2001 From: Oleg Dizus Date: Mon, 10 Sep 2018 17:43:14 +0300 Subject: [PATCH] MINT-1788 Removed core-dependencies (#791) Worklog: * MINT-1788 Remove redundant dispatch * MINT-1788 Move removeWatchersUserMonitor to src * MINT-1788 Remove core/redux/ui * MINT-1788 Move redux/modals to core redux/modals is a pure state part. It is needed by some core actions and can't be removed from core totally. Modals reducer can be replaced in different environment. * MINT-1788 Decouple userMonitorService from core Move UserMonitorService and corresponding actions to @chronobank/login-ui package. Start service after session is created * MINT-1788 Remove obsolete session tests * MINT-1788 Remove redundant saveAccountMiddleWare * MINT-1788 Move clipboard util to src * MINT-1788 Remove core-dependencies package * MINT-1788 Add important TODO comment --- package.json | 1 - packages/core-dependencies/SessionStorage.js | 7 - packages/core-dependencies/configureStore.js | 6 - packages/core-dependencies/package.json | 4 - .../core-dependencies/redux/modals/actions.js | 6 - .../core-dependencies/redux/ui/actions.js | 8 -- .../utils/CustomSerializer.js | 44 ------- .../core-dependencies/utils/SessionStorage.js | 59 --------- packages/core/package.json | 3 - packages/core/redux/ducks.js | 2 + packages/core/redux/ethereum/thunks.js | 2 +- .../core}/redux/modals/actions.js | 21 +-- .../core}/redux/modals/actions.spec.js | 2 +- .../core}/redux/modals/constants.js | 0 .../core}/redux/modals/reducer.js | 0 .../core}/redux/modals/reducer.spec.js | 6 +- packages/core/redux/nem/thunks.js | 2 +- packages/core/redux/session/actions.spec.js | 124 +----------------- .../redux/session/saveAccountMiddleWare.js | 15 --- packages/core/redux/session/thunks.js | 2 - packages/core/redux/tokens/actions.js | 13 +- packages/core/redux/ui/actions.js | 6 - packages/core/redux/watcher/actions.js | 2 - .../CommonNetworkSelector.js | 2 +- .../NetworkCreateModal/NetworkCreateModal.js | 2 +- .../NetworkDeleteModal/NetworkDeleteModal.js | 2 +- packages/login-ui/redux/thunks.js | 28 ++++ .../login-ui/redux/userMonitorService.js | 2 +- src/components/Deposits/Deposit/Deposit.jsx | 2 +- .../DepositWarningWidget.jsx | 2 +- .../AddPlatformDialog/AddPlatformDialog.jsx | 2 +- .../AddTokenDialog/AddTokenDialog.jsx | 2 +- .../AddTokenDialog/AddTokenForm.jsx | 2 +- .../AssetManager/AssetManager.jsx | 2 +- .../AssetManagerDialog/AssetManagerDialog.jsx | 2 +- .../AssetManagerDialog/AssetManagerForm.jsx | 2 +- .../BlacklistDialog/BlacklistDialog.jsx | 2 +- .../BlockAssetDialog/BlockAssetDialog.jsx | 2 +- .../PlatformInfo/PlatformInfo.jsx | 2 +- .../RevokeDialog/RevokeDialog.jsx | 2 +- .../common/ModalStack/ModalStack.jsx | 2 +- .../common/ModalStack/ModalStack.spec.js | 2 +- src/components/common/TopButtons/buttons.js | 2 +- .../DepositTokens/DepositTokensForm.jsx | 2 +- .../DepositTokens/DepositTokensModal.jsx | 2 +- .../dashboard/MicroIcon/CopyIcon.jsx | 4 +- src/components/dashboard/MicroIcon/PKIcon.jsx | 4 +- .../dialogs/AddTokenDialog/AddTokenDialog.jsx | 2 +- .../ConfirmTransferDialog.js | 2 +- .../ConfirmTxDialog/ConfirmTxDialog.jsx | 2 +- .../dialogs/CopyDialog/CopyDialog.jsx | 2 +- src/components/dialogs/ModalDialog.jsx | 2 +- .../ModalDialogBase/ModalDialogBase.js | 2 +- .../PublishPollDialog/PublishPollDialog.jsx | 2 +- .../UpdateProfileDialog.jsx | 2 +- .../UserActiveDialog/UserActiveDialog.jsx | 6 +- .../EditOwnersDialog/EditOwnersDialog.js | 2 +- .../EditSignaturesDialog.js | 2 +- .../ActivatePollTopButton.jsx | 2 +- .../voting/PollEditForm/PollEditForm.jsx | 2 +- .../AddCustomTokenTopButton.jsx | 2 +- .../WalletSettingsForm/WalletSettingsForm.jsx | 2 +- .../PendingTxWidget/PendingTxWidget.jsx | 2 +- .../TwoFaConfirmModal/TwoFaConfirmModal.jsx | 2 +- .../wallet/WalletWidget/WalletWidget.jsx | 2 +- .../WalletWidgetDetail/WalletWidgetDetail.jsx | 2 +- src/layouts/Markup.jsx | 2 +- .../DepositsContent/DepositsContent.jsx | 2 +- .../DrawerMainMenu/DrawerMainMenu.jsx | 2 +- .../ProfileContent/ProfileContent.jsx | 2 +- src/redux/configureStore.js | 2 - src/redux/ducks.js | 2 - src/redux/ui/actions.js | 65 --------- src/redux/ui/thunks.js | 2 + .../utils/clipboard.js | 0 75 files changed, 114 insertions(+), 420 deletions(-) delete mode 100644 packages/core-dependencies/SessionStorage.js delete mode 100644 packages/core-dependencies/configureStore.js delete mode 100644 packages/core-dependencies/package.json delete mode 100644 packages/core-dependencies/redux/modals/actions.js delete mode 100644 packages/core-dependencies/redux/ui/actions.js delete mode 100644 packages/core-dependencies/utils/CustomSerializer.js delete mode 100644 packages/core-dependencies/utils/SessionStorage.js rename {src => packages/core}/redux/modals/actions.js (53%) rename {src => packages/core}/redux/modals/actions.spec.js (95%) rename {src => packages/core}/redux/modals/constants.js (100%) rename {src => packages/core}/redux/modals/reducer.js (100%) rename {src => packages/core}/redux/modals/reducer.spec.js (93%) delete mode 100644 packages/core/redux/session/saveAccountMiddleWare.js delete mode 100644 packages/core/redux/ui/actions.js rename src/user/monitorService.js => packages/login-ui/redux/userMonitorService.js (96%) rename {packages/core-dependencies => src}/utils/clipboard.js (100%) diff --git a/package.json b/package.json index bbe3d3ab9..2b24239bc 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "devDependencies": { "@chronobank/chronomint-presentation": "github:chronobank/ChronoMintPresentation", "@chronobank/core": "*", - "@chronobank/core-dependencies": "*", "@chronobank/login": "*", "@chronobank/login-ui": "*", "archiver": "^2.0.0", diff --git a/packages/core-dependencies/SessionStorage.js b/packages/core-dependencies/SessionStorage.js deleted file mode 100644 index 8d485918a..000000000 --- a/packages/core-dependencies/SessionStorage.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - * - * @flow - */ -export { default } from './utils/SessionStorage' diff --git a/packages/core-dependencies/configureStore.js b/packages/core-dependencies/configureStore.js deleted file mode 100644 index 3be197535..000000000 --- a/packages/core-dependencies/configureStore.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -export { history, store } from 'redux/configureStore' diff --git a/packages/core-dependencies/package.json b/packages/core-dependencies/package.json deleted file mode 100644 index e5f6e5a53..000000000 --- a/packages/core-dependencies/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@chronobank/core-dependencies", - "version": "0.8.1" -} \ No newline at end of file diff --git a/packages/core-dependencies/redux/modals/actions.js b/packages/core-dependencies/redux/modals/actions.js deleted file mode 100644 index ebdf34380..000000000 --- a/packages/core-dependencies/redux/modals/actions.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -export * from 'redux/modals/actions' diff --git a/packages/core-dependencies/redux/ui/actions.js b/packages/core-dependencies/redux/ui/actions.js deleted file mode 100644 index 4812ffdbb..000000000 --- a/packages/core-dependencies/redux/ui/actions.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - * - * @flow - */ - -export * from 'redux/ui/actions' diff --git a/packages/core-dependencies/utils/CustomSerializer.js b/packages/core-dependencies/utils/CustomSerializer.js deleted file mode 100644 index b2961c150..000000000 --- a/packages/core-dependencies/utils/CustomSerializer.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -class CustomSerializer { - test (val) { - return this._serialize(val) - } - - print (val) { - return this._serialize(val) - } - - _keysSort (object) { - let sortedObject = Array.isArray(object) ? [] : {} - - if (typeof object.toJSON === 'function') { - object = object.toJSON() - } - - let keys = Object.keys(object).sort() - - for (let key of keys) { - if (typeof object[key] === 'object' && object[key] !== null) { - sortedObject[key] = object[key].constructor.name === 'BigNumber' || object[key].constructor.name === 'Amount' - ? object[key].toString() - : this._keysSort(object[key]) - } else { - sortedObject[key] = object[key] - } - } - - return sortedObject - } - - _serialize (item) { - return item !== null && typeof item === 'object' - ? `${JSON.stringify(this._keysSort(item), null, ' ')}` - : `${item}\r` - } -} - -export default new CustomSerializer() diff --git a/packages/core-dependencies/utils/SessionStorage.js b/packages/core-dependencies/utils/SessionStorage.js deleted file mode 100644 index 25ce78cbe..000000000 --- a/packages/core-dependencies/utils/SessionStorage.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -const isW = window.hasOwnProperty('sessionStorage') - -class SessionStorage { - /** - * @param key - * @private - */ - static _getFromSS (key: string) { - try { - if (isW) { - return JSON.parse(window.sessionStorage.getItem(key)) - } - } catch (e) { - // eslint-disable-next-line - console.warn(`SessionStorage: parse error`, e) - } - } - - /** - * @param key - * @param data - * @private - */ - static _setToSS (key: string, data: any) { - if (isW) { - window.sessionStorage.setItem(key, JSON.stringify(data)) - } - } - - /** - * @private - * @param key - */ - static _removeFromSS (key: string) { - if (isW) { - window.sessionStorage.removeItem(key) - } - } - - static getAccount () { - return SessionStorage._getFromSS('account') - } - - static setAccount (account) { - return SessionStorage._setToSS('account', account) - } - - static clearAccount () { - return SessionStorage._removeFromSS('account') - } - -} - -export default SessionStorage diff --git a/packages/core/package.json b/packages/core/package.json index 65273ec40..dd6f47e80 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,8 +27,5 @@ "uuid": "^3.3.0", "web3": "npm:web3@1.0.0-beta.33", "web3-eth-abi": "^1.0.0-beta.33" - }, - "peerDependencies": { - "@chronobank/core-dependencies": "*" } } diff --git a/packages/core/redux/ducks.js b/packages/core/redux/ducks.js index 1ea2a9170..462216648 100644 --- a/packages/core/redux/ducks.js +++ b/packages/core/redux/ducks.js @@ -14,6 +14,7 @@ import ethMultisigWallet from './multisigWallet/reducer' import events from './events/reducer' import mainWallet from './mainWallet/reducer' import market from './market/reducer' +import modals from './modals/reducer' import nem from './nem/reducer' import notifier from './notifier/reducer' import persistAccount from './persistAccount/reducer' @@ -37,6 +38,7 @@ const coreReducers = { events, mainWallet, market, + modals, nem, notifier, persistAccount, diff --git a/packages/core/redux/ethereum/thunks.js b/packages/core/redux/ethereum/thunks.js index 2856307eb..d228e407b 100644 --- a/packages/core/redux/ethereum/thunks.js +++ b/packages/core/redux/ethereum/thunks.js @@ -5,7 +5,7 @@ import BigNumber from 'bignumber.js' import { isNil, omitBy } from 'lodash' -import { modalsOpen } from '@chronobank/core-dependencies/redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { SignerMemoryModel, TxEntryModel, HolderModel } from '../../models' import { ethereumPendingSelector, pendingEntrySelector, web3Selector } from './selectors' import { DUCK_ETHEREUM } from './constants' diff --git a/src/redux/modals/actions.js b/packages/core/redux/modals/actions.js similarity index 53% rename from src/redux/modals/actions.js rename to packages/core/redux/modals/actions.js index 7f9d4a8c2..10f7c4cd2 100644 --- a/src/redux/modals/actions.js +++ b/packages/core/redux/modals/actions.js @@ -3,6 +3,11 @@ * Licensed under the AGPL Version 3 license. */ +/* +TODO: Futher refactoring. redux/modals MUST be moved +out of packages/core after finishing TX send refactoring +*/ + import { MODALS_OPEN, MODALS_REPLACE, @@ -10,26 +15,26 @@ import { MODALS_CLEAR, } from './constants' -export const modalsOpen = ({ componentName, props }) => (dispatch) => - dispatch({ +export const modalsOpen = ({ componentName, props }) => + ({ type: MODALS_OPEN, componentName, props, }) -export const modalsReplace = ({ componentName, props }) => (dispatch) => - dispatch({ +export const modalsReplace = ({ componentName, props }) => + ({ type: MODALS_REPLACE, componentName, props, }) -export const modalsClose = () => (dispatch) => - dispatch({ +export const modalsClose = () => + ({ type: MODALS_CLOSE, }) -export const modalsClear = () => (dispatch) => - dispatch({ +export const modalsClear = () => + ({ type: MODALS_CLEAR, }) diff --git a/src/redux/modals/actions.spec.js b/packages/core/redux/modals/actions.spec.js similarity index 95% rename from src/redux/modals/actions.spec.js rename to packages/core/redux/modals/actions.spec.js index e882ee09c..f9d85bbe2 100644 --- a/src/redux/modals/actions.spec.js +++ b/packages/core/redux/modals/actions.spec.js @@ -4,7 +4,7 @@ */ import { store } from 'specsInit' -import * as actions from 'redux/modals/actions' +import * as actions from './actions' describe('modals actions', () => { ['modalsOpen', 'modalsShow', 'modalsPush'].forEach((name) => { diff --git a/src/redux/modals/constants.js b/packages/core/redux/modals/constants.js similarity index 100% rename from src/redux/modals/constants.js rename to packages/core/redux/modals/constants.js diff --git a/src/redux/modals/reducer.js b/packages/core/redux/modals/reducer.js similarity index 100% rename from src/redux/modals/reducer.js rename to packages/core/redux/modals/reducer.js diff --git a/src/redux/modals/reducer.spec.js b/packages/core/redux/modals/reducer.spec.js similarity index 93% rename from src/redux/modals/reducer.spec.js rename to packages/core/redux/modals/reducer.spec.js index b78964c65..eaa19ca40 100644 --- a/src/redux/modals/reducer.spec.js +++ b/packages/core/redux/modals/reducer.spec.js @@ -3,10 +3,10 @@ * Licensed under the AGPL Version 3 license. */ -import React, { PureComponent } from 'react' +import { PureComponent } from 'react' -import * as actions from 'redux/modals/actions' -import reducer from 'redux/modals/reducer' +import * as actions from './actions' +import reducer from './reducer' const initialState = { stack: [], diff --git a/packages/core/redux/nem/thunks.js b/packages/core/redux/nem/thunks.js index 0e85cb1e3..b48f374a1 100644 --- a/packages/core/redux/nem/thunks.js +++ b/packages/core/redux/nem/thunks.js @@ -3,7 +3,7 @@ * Licensed under the AGPL Version 3 license. */ -import { modalsOpen } from '@chronobank/core-dependencies/redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { nemProvider } from '@chronobank/login/network/NemProvider' import { ErrorNoticeModel, SignerMemoryModel, TransferNoticeModel } from '../../models' import { nemPendingSelector, pendingEntrySelector } from './selectors' diff --git a/packages/core/redux/session/actions.spec.js b/packages/core/redux/session/actions.spec.js index 21c47e610..482ff9d9b 100644 --- a/packages/core/redux/session/actions.spec.js +++ b/packages/core/redux/session/actions.spec.js @@ -4,26 +4,19 @@ */ import Immutable from 'immutable' -import { LOCAL_ID } from '@chronobank/login/network/settings' -import networkService from '@chronobank/login/network/NetworkService' -import ls from '@chronobank/core-dependencies/utils/LocalStorage' import { accounts, mockStore } from 'specsInit' -import { DUCK_NETWORK } from '@chronobank/login/redux/network/constants' import VotingCollection from '../../models/voting/VotingCollection' import { DUCK_VOTING } from '../voting/constants' import { DUCK_TOKENS } from '../tokens/constants' import TokensCollection from '../../models/tokens/TokensCollection' -import ProfileModel from '../../models/ProfileModel' import MainWalletModel from '../../models/wallet/MainWalletModel' import * as a from './actions' let store -const profile = new ProfileModel({ name: 'profile1' }) const mainWallet = new MainWalletModel() // TODO let userProfile: ProfileModel -const MOCK_LAST_URL = '/test-last-url' const duckTokens = new TokensCollection() const duckVoting = new VotingCollection() @@ -38,132 +31,21 @@ const emptySessionMock = new Immutable.Map({ [ DUCK_VOTING ]: duckVoting.isInited(true), }) -const cbeSessionMock = new Immutable.Map({ - market: { - rates: {}, - lastMarket: {}, - tokens: [], - currencies: [], - profile, - }, - session: { - isSession: true, - account: accounts[ 0 ], - profile, - }, - mainWallet, - [ DUCK_TOKENS ]: duckTokens.isInited(true), - [ DUCK_VOTING ]: duckVoting.isInited(true), -}) - -const userSessionMock = new Immutable.Map({ - market: { - rates: {}, - lastMarket: {}, - tokens: [], - currencies: [], - }, - session: { - isSession: true, - account: accounts[ 5 ], - }, - mainWallet, - [ DUCK_TOKENS ]: duckTokens.isInited(true), - [ DUCK_VOTING ]: duckVoting.isInited(true), - [ DUCK_NETWORK ]: { - selectedNetworkId: LOCAL_ID, - }, -}) - describe('session actions', () => { beforeEach(() => { // override common cbe session - ls.destroySession() + store = {} }) it('should create session', () => { store = mockStore(emptySessionMock) - a.createSession({ account: accounts[ 0 ], dispatch: store.dispatch }) + store.dispatch(a.sessionCreate({ account: accounts[ 0 ] })) expect(store.getActions()).toMatchSnapshot() }) it('should destroy session', () => { store = mockStore(emptySessionMock) - a.destroySession({ dispatch: store.dispatch }) - expect(store.getActions()).toMatchSnapshot() - }) - - it('should not login without session', async () => { - store = mockStore(emptySessionMock) - let error = null - try { - await store.dispatch(a.login(accounts[ 0 ])) - } catch (e) { - error = e - } - expect(error).not.toBeNull() - }) - - it('should not update profile without session', async () => { - store = mockStore(emptySessionMock) - let error = null - try { - await store.dispatch(a.updateUserProfile(accounts[ 0 ])) - } catch (e) { - error = e - } - expect(error).not.toBeNull() - }) - - it.skip('should update profile', async () => { - const store = mockStore(cbeSessionMock) - ls.createSession(accounts[ 1 ], LOCAL_ID, LOCAL_ID) - await store.dispatch(a.updateUserProfile(profile)) - - expect(store.getActions()).toMatchSnapshot() - }) - - it('should login CBE and start watcher with cbeWatcher and go to last url', async () => { - store = mockStore(cbeSessionMock) - ls.createSession(accounts[ 0 ], LOCAL_ID, LOCAL_ID) - ls.setLastURL(MOCK_LAST_URL) - store.clearActions() - await store.dispatch(a.login(accounts[ 0 ])) - - expect(store.getActions()).toMatchSnapshot() - }) - - it('should login CBE and go to default page (/cbe)', async () => { - store = mockStore(cbeSessionMock) - ls.createSession(accounts[ 0 ], LOCAL_ID, LOCAL_ID) - store.clearActions() - - await store.dispatch(a.login(accounts[ 0 ])) - - expect(store.getActions()).toMatchSnapshot() - }) - - it('should login USER and go to default url (/wallet)', async () => { - store = mockStore(userSessionMock) - ls.createSession(accounts[ 5 ], LOCAL_ID, LOCAL_ID) - store.clearActions() - - await store.dispatch(a.login(accounts[ 5 ])) - - expect(store.getActions()).toMatchSnapshot() - }) - - it('should logout', async () => { - store = mockStore(userSessionMock) - ls.createSession(accounts[ 5 ], LOCAL_ID, LOCAL_ID) - store.clearActions() - - const handler = jest.fn() - networkService.on('destroySession', handler) - - await store.dispatch(a.logout()) - - expect(handler).toHaveBeenCalled() + store.dispatch(a.destroySession()) expect(store.getActions()).toMatchSnapshot() }) }) diff --git a/packages/core/redux/session/saveAccountMiddleWare.js b/packages/core/redux/session/saveAccountMiddleWare.js deleted file mode 100644 index 20547c7a2..000000000 --- a/packages/core/redux/session/saveAccountMiddleWare.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -import SessionStorage from '@chronobank/core-dependencies/utils/SessionStorage' -import { SESSION_CREATE } from './constants' - -const saveAccountMiddleWare = (/*store*/) => (next) => (action) => { - if (SESSION_CREATE === action.type && action.account) { - SessionStorage.setAccount(action.account) - } - next(action) -} -export default saveAccountMiddleWare diff --git a/packages/core/redux/session/thunks.js b/packages/core/redux/session/thunks.js index 315798ff3..10a5609b2 100644 --- a/packages/core/redux/session/thunks.js +++ b/packages/core/redux/session/thunks.js @@ -6,7 +6,6 @@ import { getNetworkById } from '@chronobank/login/network/settings' import { DUCK_NETWORK } from '@chronobank/login/redux/network/constants' import * as NetworkActions from '@chronobank/login/redux/network/actions' -import { removeWatchersUserMonitor } from '@chronobank/core-dependencies/redux/ui/actions' import web3Provider from '@chronobank/login/network/Web3Provider' import metaMaskResolver from '@chronobank/login/network/metaMaskResolver' import * as SessionActions from './actions' @@ -120,7 +119,6 @@ export const createNetworkSession = (account, provider, network) => (dispatch) = export const logout = () => async (dispatch) => { try { - dispatch(removeWatchersUserMonitor()) dispatch(watchStopMarket()) dispatch(destroyNetworkSession()) } catch (e) { diff --git a/packages/core/redux/tokens/actions.js b/packages/core/redux/tokens/actions.js index a51dcd6ae..a614dad14 100644 --- a/packages/core/redux/tokens/actions.js +++ b/packages/core/redux/tokens/actions.js @@ -7,8 +7,7 @@ import { bccProvider, btcProvider, btgProvider, ltcProvider } from '@chronobank/ import { nemProvider } from '@chronobank/login/network/NemProvider' import { wavesProvider } from '@chronobank/login/network/WavesProvider' import WavesDAO from '@chronobank/core/dao/WavesDAO' -import { modalsOpen } from '@chronobank/core-dependencies/redux/modals/actions' -import { showConfirmTransferModal } from '@chronobank/core-dependencies/redux/ui/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { bccDAO, btcDAO, btgDAO, ltcDAO } from '../../dao/BitcoinDAO' import ERC20ManagerDAO from '../../dao/ERC20ManagerDAO' import ethereumDAO from '../../dao/EthereumDAO' @@ -89,7 +88,15 @@ const submitTxHandler = (dao, dispatch) => async (tx: TransferExecModel | TxExec }, })) } else { - await dispatch(showConfirmTransferModal(dao, tx)) + await dispatch(modalsOpen({ + componentName: 'ConfirmTransferDialog', + props: { + tx, + dao, + confirm: (tx) => dao.accept(tx), + reject: (tx) => dao.reject(tx), + }, + })) } } catch (e) { dispatch(notifyError(e, tx.funcTitle())) diff --git a/packages/core/redux/ui/actions.js b/packages/core/redux/ui/actions.js deleted file mode 100644 index 7fcde9506..000000000 --- a/packages/core/redux/ui/actions.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Copyright 2017–2018, LaborX PTY - * Licensed under the AGPL Version 3 license. - */ - -export * from '@chronobank/core-dependencies/redux/ui/actions' diff --git a/packages/core/redux/watcher/actions.js b/packages/core/redux/watcher/actions.js index 19ed86000..d48bb9caa 100644 --- a/packages/core/redux/watcher/actions.js +++ b/packages/core/redux/watcher/actions.js @@ -4,7 +4,6 @@ */ import { watchInitMonitor } from '@chronobank/login/redux/monitor/actions' -import { watchInitUserMonitor } from '@chronobank/core-dependencies/redux/ui/actions' import { watchInitTokens, watchPlatformManager } from '../assetsManager/actions' import { initMainWallet } from '../mainWallet/actions' import { watchInitMarket } from '../market/actions' @@ -31,7 +30,6 @@ export const watcher = ({ web3 }) => async (dispatch) => { dispatch(watchPlatformManager()) dispatch(watchInitTokens()) dispatch(watchInitMonitor()) - dispatch(watchInitUserMonitor()) dispatch(watchInitMarket()) dispatch(watchInitPolls()) dispatch(watchEventsToHistory()) diff --git a/packages/login-ui/components/CommonNetworkSelector/CommonNetworkSelector.js b/packages/login-ui/components/CommonNetworkSelector/CommonNetworkSelector.js index 46d7876f1..b5d56b36a 100644 --- a/packages/login-ui/components/CommonNetworkSelector/CommonNetworkSelector.js +++ b/packages/login-ui/components/CommonNetworkSelector/CommonNetworkSelector.js @@ -18,7 +18,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import Button from 'components/common/ui/Button/Button' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import classnames from 'classnames' import Web3 from 'web3' import { diff --git a/packages/login-ui/components/NetworkCreateModal/NetworkCreateModal.js b/packages/login-ui/components/NetworkCreateModal/NetworkCreateModal.js index d78c910a7..7609d0aa5 100644 --- a/packages/login-ui/components/NetworkCreateModal/NetworkCreateModal.js +++ b/packages/login-ui/components/NetworkCreateModal/NetworkCreateModal.js @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { Translate } from 'react-redux-i18n' -import { modalsClose, modalsOpen } from 'redux/modals/actions' +import { modalsClose, modalsOpen } from '@chronobank/core/redux/modals/actions' import { customNetworkEdit, customNetworksDelete, diff --git a/packages/login-ui/components/NetworkCreateModal/NetworkDeleteModal/NetworkDeleteModal.js b/packages/login-ui/components/NetworkCreateModal/NetworkDeleteModal/NetworkDeleteModal.js index d5fff4ba4..fe7fe5105 100644 --- a/packages/login-ui/components/NetworkCreateModal/NetworkDeleteModal/NetworkDeleteModal.js +++ b/packages/login-ui/components/NetworkCreateModal/NetworkDeleteModal/NetworkDeleteModal.js @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { Translate } from 'react-redux-i18n' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import Button from 'components/common/ui/Button/Button' import { customNetworkEdit, diff --git a/packages/login-ui/redux/thunks.js b/packages/login-ui/redux/thunks.js index ea79b48a9..1833a7a94 100644 --- a/packages/login-ui/redux/thunks.js +++ b/packages/login-ui/redux/thunks.js @@ -23,6 +23,7 @@ import { } from '@chronobank/core/redux/persistAccount/constants' import * as NetworkThunks from '@chronobank/login/redux/network/thunks' import * as SessionThunks from '@chronobank/core/redux/session/thunks' +import { modalsOpen, modalsClose } from '@chronobank/core/redux/modals/actions' import * as PersistAccountActions from '@chronobank/core/redux/persistAccount/actions' import PublicBackendProvider from '@chronobank/login/network/PublicBackendProvider' import { SignerMemoryModel } from '@chronobank/core/models' @@ -35,6 +36,7 @@ import { FORM_LOGIN_PAGE_FIELD_SUCCESS_MESSAGE, FORM_FOOTER_EMAIL_SUBSCRIPTION, } from './constants' +import userMonitorService from './userMonitorService' /* * Thunk dispatched by "" screen. @@ -122,6 +124,9 @@ export const onSubmitLoginForm = (password) => async (dispatch, getState) => { selectedNetworkId, )) localStorage.createSession(selectedAccount, selectedProviderId, selectedNetworkId) + + dispatch(watchInitUserMonitor()) + const defaultURL = await dispatch(SessionThunks.login(selectedAccount)) dispatch(replace(localStorage.getLastURL() || defaultURL)) } @@ -325,3 +330,26 @@ export const onSubmitLoginFormFail = (errors, submitErrors) => (dispatch) => { dispatch(stopSubmit(FORM_LOGIN_PAGE, submitErrors && submitErrors.errors)) dispatch(NetworkActions.networkResetLoginSubmitting()) } + +export const startUserMonitorAndCloseModals = () => (dispatch) => { + userMonitorService.start() + dispatch(modalsClose()) +} + +export const stopUserMonitor = () => () => { + userMonitorService.stop() +} + +export const removeWatchersUserMonitor = () => () => { + userMonitorService + .removeAllListeners('active') + .stop() +} + +export const watchInitUserMonitor = () => (dispatch) => { + userMonitorService + .on('active', () => dispatch(modalsOpen({ + componentName: 'UserActiveDialog', + }))) + .start() +} diff --git a/src/user/monitorService.js b/packages/login-ui/redux/userMonitorService.js similarity index 96% rename from src/user/monitorService.js rename to packages/login-ui/redux/userMonitorService.js index 85cf622b6..9dff30bdb 100644 --- a/src/user/monitorService.js +++ b/packages/login-ui/redux/userMonitorService.js @@ -4,7 +4,7 @@ */ import EventEmitter from 'events' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' export const USER_ACTIVE = 'USER_ACTIVE' diff --git a/src/components/Deposits/Deposit/Deposit.jsx b/src/components/Deposits/Deposit/Deposit.jsx index 037925ddf..4c0429a2f 100644 --- a/src/components/Deposits/Deposit/Deposit.jsx +++ b/src/components/Deposits/Deposit/Deposit.jsx @@ -13,7 +13,7 @@ import { getDeposit } from '@chronobank/core/redux/mainWallet/selectors' import Button from 'components/common/ui/Button/Button' import IPFSImage from 'components/common/IPFSImage/IPFSImage' import TokenValue from 'components/common/TokenValue/TokenValue' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { DUCK_TOKENS } from '@chronobank/core/redux/tokens/constants' import TokenModel from '@chronobank/core/models/tokens/TokenModel' import { TOKEN_ICONS } from 'assets' diff --git a/src/components/Deposits/DepositWarningWidget/DepositWarningWidget.jsx b/src/components/Deposits/DepositWarningWidget/DepositWarningWidget.jsx index 92c872955..274c6c32f 100644 --- a/src/components/Deposits/DepositWarningWidget/DepositWarningWidget.jsx +++ b/src/components/Deposits/DepositWarningWidget/DepositWarningWidget.jsx @@ -13,7 +13,7 @@ import { TIME } from '@chronobank/core/dao/constants' import { DUCK_ASSETS_HOLDER } from '@chronobank/core/redux/assetsHolder/constants' import AllowanceModel from '@chronobank/core/models/wallet/AllowanceModel' import { getDeposit } from '@chronobank/core/redux/mainWallet/selectors' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import WalletModel from '@chronobank/core/models/wallet/WalletModel' import { getMainEthWallet } from '@chronobank/core/redux/wallets/selectors/models' import PropTypes from 'prop-types' diff --git a/src/components/assetsManager/AddPlatformDialog/AddPlatformDialog.jsx b/src/components/assetsManager/AddPlatformDialog/AddPlatformDialog.jsx index e4f2c959e..138367180 100644 --- a/src/components/assetsManager/AddPlatformDialog/AddPlatformDialog.jsx +++ b/src/components/assetsManager/AddPlatformDialog/AddPlatformDialog.jsx @@ -8,7 +8,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import AddPlatformForm, { prefix } from './AddPlatformForm' function mapDispatchToProps (dispatch) { diff --git a/src/components/assetsManager/AddTokenDialog/AddTokenDialog.jsx b/src/components/assetsManager/AddTokenDialog/AddTokenDialog.jsx index b7a1b0c02..23dc7196d 100644 --- a/src/components/assetsManager/AddTokenDialog/AddTokenDialog.jsx +++ b/src/components/assetsManager/AddTokenDialog/AddTokenDialog.jsx @@ -8,7 +8,7 @@ import { Translate } from 'react-redux-i18n' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import AddTokenForm, { prefix } from './AddTokenForm' function mapDispatchToProps (dispatch) { diff --git a/src/components/assetsManager/AddTokenDialog/AddTokenForm.jsx b/src/components/assetsManager/AddTokenDialog/AddTokenForm.jsx index 3d2b84903..4a926834a 100644 --- a/src/components/assetsManager/AddTokenDialog/AddTokenForm.jsx +++ b/src/components/assetsManager/AddTokenDialog/AddTokenForm.jsx @@ -25,7 +25,7 @@ import FileModel from '@chronobank/core/models/FileSelect/FileModel' import TokenModel from '@chronobank/core/models/tokens/TokenModel' import { createAsset } from '@chronobank/core/redux/assetsManager/actions' import { DUCK_ASSETS_MANAGER } from '@chronobank/core/redux/assetsManager/constants' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import IPFSImage from 'components/common/IPFSImage/IPFSImage' import ipfs from '@chronobank/core/utils/IPFS' import FeeModel from '@chronobank/core/models/tokens/FeeModel' diff --git a/src/components/assetsManager/AssetManager/AssetManager.jsx b/src/components/assetsManager/AssetManager/AssetManager.jsx index 041759bc9..9670ef04a 100644 --- a/src/components/assetsManager/AssetManager/AssetManager.jsx +++ b/src/components/assetsManager/AssetManager/AssetManager.jsx @@ -11,7 +11,7 @@ import { Translate } from 'react-redux-i18n' import { connect } from 'react-redux' import { DUCK_ASSETS_MANAGER } from '@chronobank/core/redux/assetsManager/constants' import { createPlatform } from '@chronobank/core/redux/assetsManager/actions' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import HistoryTable from 'components/assetsManager/HistoryTable/HistoryTable' import PlatformInfo from 'components/assetsManager/PlatformInfo/PlatformInfo' import PlatformsList from 'components/assetsManager/PlatformsList/PlatformsList' diff --git a/src/components/assetsManager/AssetManagerDialog/AssetManagerDialog.jsx b/src/components/assetsManager/AssetManagerDialog/AssetManagerDialog.jsx index 2bd1bcdf0..80c6bd43e 100644 --- a/src/components/assetsManager/AssetManagerDialog/AssetManagerDialog.jsx +++ b/src/components/assetsManager/AssetManagerDialog/AssetManagerDialog.jsx @@ -8,7 +8,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import AssetManagerForm from './AssetManagerForm' function prefix (token) { diff --git a/src/components/assetsManager/AssetManagerDialog/AssetManagerForm.jsx b/src/components/assetsManager/AssetManagerDialog/AssetManagerForm.jsx index 6a2804a52..b1c908df3 100644 --- a/src/components/assetsManager/AssetManagerDialog/AssetManagerForm.jsx +++ b/src/components/assetsManager/AssetManagerDialog/AssetManagerForm.jsx @@ -9,7 +9,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { addManager, removeManager } from '@chronobank/core/redux/assetsManager/actions' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { getSelectedToken } from '@chronobank/core/redux/assetsManager/selectors' import './AssetManagerForm.scss' diff --git a/src/components/assetsManager/BlacklistDialog/BlacklistDialog.jsx b/src/components/assetsManager/BlacklistDialog/BlacklistDialog.jsx index 5f6d2bf89..c62674b52 100644 --- a/src/components/assetsManager/BlacklistDialog/BlacklistDialog.jsx +++ b/src/components/assetsManager/BlacklistDialog/BlacklistDialog.jsx @@ -7,7 +7,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { Translate } from 'react-redux-i18n' import BlacklistForm from 'components/assetsManager/BlacklistForm/BlacklistForm' import { restrictUser, unrestrictUser } from '@chronobank/core/redux/assetsManager/actions' diff --git a/src/components/assetsManager/BlockAssetDialog/BlockAssetDialog.jsx b/src/components/assetsManager/BlockAssetDialog/BlockAssetDialog.jsx index 4f2a0646a..9ca842c5e 100644 --- a/src/components/assetsManager/BlockAssetDialog/BlockAssetDialog.jsx +++ b/src/components/assetsManager/BlockAssetDialog/BlockAssetDialog.jsx @@ -7,7 +7,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { Translate } from 'react-redux-i18n' import { changePauseStatus } from '@chronobank/core/redux/assetsManager/actions' import TokenModel from '@chronobank/core/models/tokens/TokenModel' diff --git a/src/components/assetsManager/PlatformInfo/PlatformInfo.jsx b/src/components/assetsManager/PlatformInfo/PlatformInfo.jsx index 3ef83661c..eaa409579 100644 --- a/src/components/assetsManager/PlatformInfo/PlatformInfo.jsx +++ b/src/components/assetsManager/PlatformInfo/PlatformInfo.jsx @@ -15,7 +15,7 @@ import { connect } from 'react-redux' import { Translate } from 'react-redux-i18n' import { getFee, getManagersForAssetSymbol } from '@chronobank/core/redux/assetsManager/actions' import { DUCK_ASSETS_MANAGER } from '@chronobank/core/redux/assetsManager/constants' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import ReissueAssetForm from 'components/assetsManager/ReissueAssetForm/ReissueAssetForm' import { getSelectedToken } from '@chronobank/core/redux/assetsManager/selectors' import TokenModel from '@chronobank/core/models/tokens/TokenModel' diff --git a/src/components/assetsManager/RevokeDialog/RevokeDialog.jsx b/src/components/assetsManager/RevokeDialog/RevokeDialog.jsx index 4cf62bf0c..8b7c1d914 100644 --- a/src/components/assetsManager/RevokeDialog/RevokeDialog.jsx +++ b/src/components/assetsManager/RevokeDialog/RevokeDialog.jsx @@ -8,7 +8,7 @@ import { Translate } from 'react-redux-i18n' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ModalDialog from 'components/dialogs/ModalDialog' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import RevokeForm, { prefix } from './RevokeForm' function mapDispatchToProps (dispatch) { diff --git a/src/components/common/ModalStack/ModalStack.jsx b/src/components/common/ModalStack/ModalStack.jsx index 827497357..8a42eb0c1 100644 --- a/src/components/common/ModalStack/ModalStack.jsx +++ b/src/components/common/ModalStack/ModalStack.jsx @@ -6,7 +6,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' -import { DUCK_MODALS } from 'redux/modals/constants' +import { DUCK_MODALS } from '@chronobank/core/redux/modals/constants' import ModalsSelector from './ModalSelector' import './ModalStack.scss' diff --git a/src/components/common/ModalStack/ModalStack.spec.js b/src/components/common/ModalStack/ModalStack.spec.js index 1e666aa11..4dba3ced4 100644 --- a/src/components/common/ModalStack/ModalStack.spec.js +++ b/src/components/common/ModalStack/ModalStack.spec.js @@ -7,7 +7,7 @@ import React from 'react' import Immutable from 'immutable' import { Provider } from 'react-redux' import { mockStore } from 'specsInit' -import { DUCK_MODALS } from 'redux/modals/constants' +import { DUCK_MODALS } from '@chronobank/redux/modals/constants' import { mount } from 'enzyme' import ModalDialog from 'components/dialogs/ModalDialog' import ModalStack from 'components/common/ModalStack/ModalStack' diff --git a/src/components/common/TopButtons/buttons.js b/src/components/common/TopButtons/buttons.js index 41c021acb..b9444e1a2 100644 --- a/src/components/common/TopButtons/buttons.js +++ b/src/components/common/TopButtons/buttons.js @@ -3,7 +3,7 @@ * Licensed under the AGPL Version 3 license. */ -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { navigateToAddWallet, navigateToNewPoll } from 'redux/ui/navigation' import { goBackForAddWalletsForm } from 'redux/ui/thunks' import { changeWalletView } from 'redux/ui/actions' diff --git a/src/components/dashboard/DepositTokens/DepositTokensForm.jsx b/src/components/dashboard/DepositTokens/DepositTokensForm.jsx index 8af0f983c..980b422a5 100644 --- a/src/components/dashboard/DepositTokens/DepositTokensForm.jsx +++ b/src/components/dashboard/DepositTokens/DepositTokensForm.jsx @@ -11,7 +11,7 @@ import { isTestingNetwork } from '@chronobank/login/network/settings' import { DUCK_NETWORK } from '@chronobank/login/redux/network/constants' import web3Converter from '@chronobank/core/utils/Web3Converter' import { TOKEN_ICONS } from 'assets' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import BigNumber from 'bignumber.js' import Preloader from 'components/common/Preloader/Preloader' import TokenValue from 'components/common/TokenValue/TokenValue' diff --git a/src/components/dashboard/DepositTokens/DepositTokensModal.jsx b/src/components/dashboard/DepositTokens/DepositTokensModal.jsx index 3fac57e9c..df1ef1b23 100644 --- a/src/components/dashboard/DepositTokens/DepositTokensModal.jsx +++ b/src/components/dashboard/DepositTokens/DepositTokensModal.jsx @@ -9,7 +9,7 @@ import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { change } from 'redux-form' import { depositAsset, initAssetsHolder, withdrawAsset } from '@chronobank/core/redux/assetsHolder/actions' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { mainApprove } from '@chronobank/core/redux/wallets/actions' import ModalDialog from 'components/dialogs/ModalDialog' import { diff --git a/src/components/dashboard/MicroIcon/CopyIcon.jsx b/src/components/dashboard/MicroIcon/CopyIcon.jsx index 22bdea2bc..466f859a1 100644 --- a/src/components/dashboard/MicroIcon/CopyIcon.jsx +++ b/src/components/dashboard/MicroIcon/CopyIcon.jsx @@ -8,9 +8,9 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import ArbitraryNoticeModel from '@chronobank/core/models/notices/ArbitraryNoticeModel' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { notify } from '@chronobank/core/redux/notifier/actions' -import clipboard from '@chronobank/core-dependencies/utils/clipboard' +import clipboard from 'utils/clipboard' import './MicroIcon.scss' diff --git a/src/components/dashboard/MicroIcon/PKIcon.jsx b/src/components/dashboard/MicroIcon/PKIcon.jsx index 7dd1cf9f9..eda384b57 100644 --- a/src/components/dashboard/MicroIcon/PKIcon.jsx +++ b/src/components/dashboard/MicroIcon/PKIcon.jsx @@ -8,9 +8,9 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import ArbitraryNoticeModel from '@chronobank/core/models/notices/ArbitraryNoticeModel' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { notify } from '@chronobank/core/redux/notifier/actions' -import clipboard from '@chronobank/core-dependencies/utils/clipboard' +import clipboard from 'utils/clipboard' import { getPrivateKeyFromBlockchain } from '@chronobank/login/redux/network/utils' import './MicroIcon.scss' diff --git a/src/components/dialogs/AddTokenDialog/AddTokenDialog.jsx b/src/components/dialogs/AddTokenDialog/AddTokenDialog.jsx index bb15812d9..a530184c4 100644 --- a/src/components/dialogs/AddTokenDialog/AddTokenDialog.jsx +++ b/src/components/dialogs/AddTokenDialog/AddTokenDialog.jsx @@ -14,7 +14,7 @@ import { ACCEPT_IMAGES } from '@chronobank/core/models/FileSelect/FileExtension' import TokenModel from '@chronobank/core/models/tokens/TokenModel' import { addToken, formTokenLoadMetaData } from '@chronobank/core/redux/settings/erc20/tokens/actions' import { DUCK_SESSION } from '@chronobank/core/redux/session/constants' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import FileSelect from 'components/common/FileSelect/FileSelect' import IPFSImage from 'components/common/IPFSImage/IPFSImage' import { DUCK_TOKENS } from '@chronobank/core/redux/tokens/constants' diff --git a/src/components/dialogs/ConfirmTransferDialog/ConfirmTransferDialog.js b/src/components/dialogs/ConfirmTransferDialog/ConfirmTransferDialog.js index ed636b9a6..53f3b1b94 100644 --- a/src/components/dialogs/ConfirmTransferDialog/ConfirmTransferDialog.js +++ b/src/components/dialogs/ConfirmTransferDialog/ConfirmTransferDialog.js @@ -17,7 +17,7 @@ import BitcoinDAO from '@chronobank/core/dao/BitcoinDAO' import NemDAO from '@chronobank/core/dao/NemDAO' import WavesDAO from '@chronobank/core/dao/WavesDAO' -import { modalsClear, modalsClose } from 'redux/modals/actions' +import { modalsClear, modalsClose } from '@chronobank/core/redux/modals/actions' import { getWallet } from '@chronobank/core/redux/wallets/selectors/models' import Value from 'components/common/Value/Value' diff --git a/src/components/dialogs/ConfirmTxDialog/ConfirmTxDialog.jsx b/src/components/dialogs/ConfirmTxDialog/ConfirmTxDialog.jsx index d8f702aa2..5519260a0 100644 --- a/src/components/dialogs/ConfirmTxDialog/ConfirmTxDialog.jsx +++ b/src/components/dialogs/ConfirmTxDialog/ConfirmTxDialog.jsx @@ -11,7 +11,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { Translate } from 'react-redux-i18n' -import { modalsClear, modalsClose } from 'redux/modals/actions' +import { modalsClear, modalsClose } from '@chronobank/core/redux/modals/actions' import { ETH } from '@chronobank/core/dao/constants' import TxEntryModel from '@chronobank/core/models/TxEntryModel' import { LogTxModel } from '@chronobank/core/models' diff --git a/src/components/dialogs/CopyDialog/CopyDialog.jsx b/src/components/dialogs/CopyDialog/CopyDialog.jsx index b526008e0..a3d011198 100644 --- a/src/components/dialogs/CopyDialog/CopyDialog.jsx +++ b/src/components/dialogs/CopyDialog/CopyDialog.jsx @@ -8,7 +8,7 @@ import { TextField } from 'redux-form-material-ui' import Button from 'components/common/ui/Button/Button' import React, { PureComponent } from 'react' import { connect } from 'react-redux' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import ModalDialog from '../ModalDialog' import './CopyDialog.scss' diff --git a/src/components/dialogs/ModalDialog.jsx b/src/components/dialogs/ModalDialog.jsx index 7411b8074..321a64852 100644 --- a/src/components/dialogs/ModalDialog.jsx +++ b/src/components/dialogs/ModalDialog.jsx @@ -7,7 +7,7 @@ import { CSSTransitionGroup } from 'react-transition-group' import PropTypes from 'prop-types' import { connect } from 'react-redux' import React, { PureComponent } from 'react' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import './ModalDialog.scss' const TRANSITION_TIMEOUT = 300 diff --git a/src/components/dialogs/ModalDialogBase/ModalDialogBase.js b/src/components/dialogs/ModalDialogBase/ModalDialogBase.js index 2f5a84210..479e38101 100644 --- a/src/components/dialogs/ModalDialogBase/ModalDialogBase.js +++ b/src/components/dialogs/ModalDialogBase/ModalDialogBase.js @@ -8,7 +8,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { Translate } from 'react-redux-i18n' import { connect } from 'react-redux' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import ModalDialog from '../ModalDialog' import './ModalDialogBase.scss' diff --git a/src/components/dialogs/PublishPollDialog/PublishPollDialog.jsx b/src/components/dialogs/PublishPollDialog/PublishPollDialog.jsx index 4c091ef9f..a1ef44f2a 100644 --- a/src/components/dialogs/PublishPollDialog/PublishPollDialog.jsx +++ b/src/components/dialogs/PublishPollDialog/PublishPollDialog.jsx @@ -8,7 +8,7 @@ import Button from 'components/common/ui/Button/Button' import React, { PureComponent } from 'react' import { Translate } from 'react-redux-i18n' import { connect } from 'react-redux' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { PTPoll } from '@chronobank/core/redux/voting/types' import { activatePoll } from '@chronobank/core/redux/voting/thunks' import ModalDialog from '../ModalDialog' diff --git a/src/components/dialogs/UpdateProvideDialog/UpdateProfileDialog.jsx b/src/components/dialogs/UpdateProvideDialog/UpdateProfileDialog.jsx index 08970867f..67f938ce7 100644 --- a/src/components/dialogs/UpdateProvideDialog/UpdateProfileDialog.jsx +++ b/src/components/dialogs/UpdateProvideDialog/UpdateProfileDialog.jsx @@ -19,7 +19,7 @@ import { getAccountProfileSummary } from '@chronobank/core/redux/session/selecto import { getAccountName, } from '@chronobank/core/redux/persistAccount/utils' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import CopyIcon from 'components/dashboard/MicroIcon/CopyIcon' import AvatarSelect from 'components/common/AvatarSelect/AvatarSelect' import ProfileImage from 'components/common/ProfileImage/ProfileImage' diff --git a/src/components/dialogs/UserActiveDialog/UserActiveDialog.jsx b/src/components/dialogs/UserActiveDialog/UserActiveDialog.jsx index 3301ad499..3c65cf14e 100644 --- a/src/components/dialogs/UserActiveDialog/UserActiveDialog.jsx +++ b/src/components/dialogs/UserActiveDialog/UserActiveDialog.jsx @@ -7,11 +7,11 @@ import PropTypes from 'prop-types' import Button from 'components/common/ui/Button/Button' import React, { PureComponent } from 'react' import { Translate } from 'react-redux-i18n' -import userMonitorService from 'user/monitorService' +import userMonitorService from '@chronobank/login-ui/redux/userMonitorService' import { connect } from 'react-redux' import { logoutAndNavigateToRoot } from 'redux/ui/thunks' -import { modalsClose } from 'redux/modals/actions' -import { stopUserMonitor } from 'redux/ui/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' +import { stopUserMonitor } from '@chronobank/login-ui/redux/thunks' import ModalDialog from 'components/dialogs/ModalDialog' import Timer from 'components/common/Timer/Timer' diff --git a/src/components/dialogs/wallet/EditOwnersDialog/EditOwnersDialog.js b/src/components/dialogs/wallet/EditOwnersDialog/EditOwnersDialog.js index 6bc6688eb..9bc125faf 100644 --- a/src/components/dialogs/wallet/EditOwnersDialog/EditOwnersDialog.js +++ b/src/components/dialogs/wallet/EditOwnersDialog/EditOwnersDialog.js @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { addOwner, removeOwner } from '@chronobank/core/redux/multisigWallet/actions' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import EditManagersBaseForm from 'components/forms/EditManagersBaseForm/EditManagersBaseForm' import ModalDialog from 'components/dialogs/ModalDialog' import MultisigEthWalletModel from '@chronobank/core/models/wallet/MultisigEthWalletModel' diff --git a/src/components/dialogs/wallet/EditSignaturesDialog/EditSignaturesDialog.js b/src/components/dialogs/wallet/EditSignaturesDialog/EditSignaturesDialog.js index 72c40c272..eb1ca184c 100644 --- a/src/components/dialogs/wallet/EditSignaturesDialog/EditSignaturesDialog.js +++ b/src/components/dialogs/wallet/EditSignaturesDialog/EditSignaturesDialog.js @@ -8,7 +8,7 @@ import EditSignaturesForm from 'components/dialogs/wallet/EditSignaturesDialog/E import PropTypes from 'prop-types' import React, { PureComponent } from 'react' import { connect } from 'react-redux' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { changeRequirement } from '@chronobank/core/redux/multisigWallet/actions' import MultisigEthWalletModel from '@chronobank/core/models/wallet/MultisigEthWalletModel' diff --git a/src/components/voting/ActivatePollTopButton/ActivatePollTopButton.jsx b/src/components/voting/ActivatePollTopButton/ActivatePollTopButton.jsx index 77b7f805f..f53f35c7f 100644 --- a/src/components/voting/ActivatePollTopButton/ActivatePollTopButton.jsx +++ b/src/components/voting/ActivatePollTopButton/ActivatePollTopButton.jsx @@ -11,7 +11,7 @@ import { Translate } from 'react-redux-i18n' import { isCBE } from '@chronobank/core/redux/session/selectors' import { PTPoll } from '@chronobank/core/redux/voting/types' import Button from 'components/common/ui/Button/Button' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import './ActivatePollTopButton.scss' function makeMapStateToProps () { diff --git a/src/components/voting/PollEditForm/PollEditForm.jsx b/src/components/voting/PollEditForm/PollEditForm.jsx index 735bf02ea..b344defa0 100644 --- a/src/components/voting/PollEditForm/PollEditForm.jsx +++ b/src/components/voting/PollEditForm/PollEditForm.jsx @@ -27,7 +27,7 @@ import { TX_CREATE_POLL } from '@chronobank/core/dao/constants/VotingManagerDAO' import { DUCK_SESSION } from '@chronobank/core/redux/session/constants' import { createPoll } from '@chronobank/core/redux/voting/thunks' import { DUCK_VOTING } from '@chronobank/core/redux/voting/constants' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import Amount from '@chronobank/core/models/Amount' import { FEE_RATE_MULTIPLIER } from '@chronobank/core/redux/mainWallet/constants' import { TIME } from '@chronobank/core/dao/constants' diff --git a/src/components/wallet/AddWalletWidget/AddCustomTokenTopButton/AddCustomTokenTopButton.jsx b/src/components/wallet/AddWalletWidget/AddCustomTokenTopButton/AddCustomTokenTopButton.jsx index 45a69ae95..e0aca81ca 100644 --- a/src/components/wallet/AddWalletWidget/AddCustomTokenTopButton/AddCustomTokenTopButton.jsx +++ b/src/components/wallet/AddWalletWidget/AddCustomTokenTopButton/AddCustomTokenTopButton.jsx @@ -11,7 +11,7 @@ import { BLOCKCHAIN_ETHEREUM } from '@chronobank/core/dao/constants' import { formValueSelector } from 'redux-form/immutable' import { Translate } from 'react-redux-i18n' import Button from 'components/common/ui/Button/Button' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import './AddCustomTokenTopButton.scss' function makeMapStateToProps () { diff --git a/src/components/wallet/AddWalletWidget/WalletSettingsForm/WalletSettingsForm.jsx b/src/components/wallet/AddWalletWidget/WalletSettingsForm/WalletSettingsForm.jsx index 366e289e8..e92b75e3f 100644 --- a/src/components/wallet/AddWalletWidget/WalletSettingsForm/WalletSettingsForm.jsx +++ b/src/components/wallet/AddWalletWidget/WalletSettingsForm/WalletSettingsForm.jsx @@ -12,7 +12,7 @@ import { Translate } from 'react-redux-i18n' import { Field, formPropTypes, reduxForm } from 'redux-form/immutable' import ModalDialog from 'components/dialogs/ModalDialog' import { setMultisigWalletName } from '@chronobank/core/redux/multisigWallet/actions' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import { PTWallet } from '@chronobank/core/redux/wallet/types' import { setWalletName } from '@chronobank/core/redux/wallets/actions' import { FORM_WALLET_SETTINGS } from 'components/constants' diff --git a/src/components/wallet/PendingTxWidget/PendingTxWidget.jsx b/src/components/wallet/PendingTxWidget/PendingTxWidget.jsx index 128ea80c4..ae3aa9292 100644 --- a/src/components/wallet/PendingTxWidget/PendingTxWidget.jsx +++ b/src/components/wallet/PendingTxWidget/PendingTxWidget.jsx @@ -14,7 +14,7 @@ import Preloader from 'components/common/Preloader/Preloader' import MultisigWalletPendingTxModel from '@chronobank/core/models/wallet/MultisigWalletPendingTxModel' import Amount from '@chronobank/core/models/Amount' import { confirmMultisigTx, revokeMultisigTx } from '@chronobank/core/redux/multisigWallet/actions' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import MultisigEthWalletModel from '@chronobank/core/models/wallet/MultisigEthWalletModel' import WalletModel from '@chronobank/core/models/wallet/WalletModel' diff --git a/src/components/wallet/TwoFaConfirmModal/TwoFaConfirmModal.jsx b/src/components/wallet/TwoFaConfirmModal/TwoFaConfirmModal.jsx index ef4ef36bf..0f29f38d4 100644 --- a/src/components/wallet/TwoFaConfirmModal/TwoFaConfirmModal.jsx +++ b/src/components/wallet/TwoFaConfirmModal/TwoFaConfirmModal.jsx @@ -14,7 +14,7 @@ import { confirm2FATransfer, updatePendingTx } from '@chronobank/core/redux/mult import PropTypes from 'prop-types' import MultisigWalletPendingTxModel from '@chronobank/core/models/wallet/MultisigWalletPendingTxModel' import Preloader from 'components/common/Preloader/Preloader' -import { modalsClose } from 'redux/modals/actions' +import { modalsClose } from '@chronobank/core/redux/modals/actions' import MultisigEthWalletModel from '@chronobank/core/models/wallet/MultisigEthWalletModel' import { FORM_2FA_CONFIRM } from 'components/constants' import { prefix } from './lang' diff --git a/src/components/wallet/WalletWidget/WalletWidget.jsx b/src/components/wallet/WalletWidget/WalletWidget.jsx index c80dfcfa2..8b24908e4 100644 --- a/src/components/wallet/WalletWidget/WalletWidget.jsx +++ b/src/components/wallet/WalletWidget/WalletWidget.jsx @@ -9,7 +9,7 @@ import { Link } from 'react-router' import React, { PureComponent } from 'react' import { connect } from 'react-redux' import { selectWallet } from '@chronobank/core/redux/wallet/actions' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { Translate } from 'react-redux-i18n' import { TOKEN_ICONS } from 'assets' import { DUCK_TOKENS } from '@chronobank/core/redux/tokens/constants' diff --git a/src/components/wallet/WalletWidgetDetail/WalletWidgetDetail.jsx b/src/components/wallet/WalletWidgetDetail/WalletWidgetDetail.jsx index 2751ed0df..58b0245c4 100644 --- a/src/components/wallet/WalletWidgetDetail/WalletWidgetDetail.jsx +++ b/src/components/wallet/WalletWidgetDetail/WalletWidgetDetail.jsx @@ -7,7 +7,7 @@ import PropTypes from 'prop-types' import TokenModel from '@chronobank/core/models/tokens/TokenModel' import React, { PureComponent } from 'react' import { connect } from 'react-redux' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { Translate } from 'react-redux-i18n' import { TOKEN_ICONS } from 'assets' import Button from 'components/common/ui/Button/Button' diff --git a/src/layouts/Markup.jsx b/src/layouts/Markup.jsx index 31e4830ff..6cd38caad 100644 --- a/src/layouts/Markup.jsx +++ b/src/layouts/Markup.jsx @@ -17,7 +17,7 @@ import { closeNotifier } from '@chronobank/core/redux/notifier/actions' import { DUCK_NOTIFIER } from '@chronobank/core/redux/notifier/constants' import theme from 'styles/themes/default' import { DUCK_SIDES } from 'redux/sides/constants' -import { DUCK_MODALS } from 'redux/modals/constants' +import { DUCK_MODALS } from '@chronobank/core/redux/modals/constants' import MuiThemeProvider from '@material-ui/core/es/styles/MuiThemeProvider' import IconButton from '@material-ui/core/es/IconButton/IconButton' import DrawerMainMenu from 'layouts/partials/DrawerMainMenu/DrawerMainMenu' diff --git a/src/layouts/partials/DepositsContent/DepositsContent.jsx b/src/layouts/partials/DepositsContent/DepositsContent.jsx index 8569fb9df..f5fb7377e 100644 --- a/src/layouts/partials/DepositsContent/DepositsContent.jsx +++ b/src/layouts/partials/DepositsContent/DepositsContent.jsx @@ -13,7 +13,7 @@ import { getDeposit } from '@chronobank/core/redux/mainWallet/selectors' import Amount from '@chronobank/core/models/Amount' import DepositsList from 'components/Deposits/DepositsList/DepositsList' import Button from 'components/common/ui/Button/Button' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import DepositWarningWidget from 'components/Deposits/DepositWarningWidget/DepositWarningWidget' import { prefix } from './lang' import './DepositsContent.scss' diff --git a/src/layouts/partials/DrawerMainMenu/DrawerMainMenu.jsx b/src/layouts/partials/DrawerMainMenu/DrawerMainMenu.jsx index 33cc971de..ed1070601 100644 --- a/src/layouts/partials/DrawerMainMenu/DrawerMainMenu.jsx +++ b/src/layouts/partials/DrawerMainMenu/DrawerMainMenu.jsx @@ -22,7 +22,7 @@ import chronoWalletLogoSVG from 'assets/img/chronowallettext-white.svg' import ProfileImage from 'components/common/ProfileImage/ProfileImage' import exitSvg from 'assets/img/exit-white.svg' import { sidesCloseAll, sidesOpen } from 'redux/sides/actions' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import { getAccountAvatar, getAccountName } from '@chronobank/core/redux/persistAccount/utils' import { MENU_TOKEN_MORE_INFO_PANEL_KEY } from 'redux/sides/constants' import { getWalletsLength } from '@chronobank/core/redux/wallets/selectors/wallets' diff --git a/src/layouts/partials/ProfileContent/ProfileContent.jsx b/src/layouts/partials/ProfileContent/ProfileContent.jsx index bfce7dd54..168ddf747 100644 --- a/src/layouts/partials/ProfileContent/ProfileContent.jsx +++ b/src/layouts/partials/ProfileContent/ProfileContent.jsx @@ -12,7 +12,7 @@ import ProfileModel from '@chronobank/core/models/ProfileModel' import React, { PureComponent } from 'react' import { logoutAndNavigateToRoot } from 'redux/ui/thunks' import { getBlockchainAddressesList } from '@chronobank/core/redux/session/selectors' -import { modalsOpen } from 'redux/modals/actions' +import { modalsOpen } from '@chronobank/core/redux/modals/actions' import IPFSImage from 'components/common/IPFSImage/IPFSImage' import CopyIcon from 'components/dashboard/MicroIcon/CopyIcon' import QRIcon from 'components/dashboard/MicroIcon/QRIcon' diff --git a/src/redux/configureStore.js b/src/redux/configureStore.js index 4189101eb..1358eff2e 100644 --- a/src/redux/configureStore.js +++ b/src/redux/configureStore.js @@ -14,7 +14,6 @@ import { reducer as formReducer } from 'redux-form/immutable' import { loadI18n } from 'redux/i18n/actions' import { I18n, i18nReducer, loadTranslations, setLocale } from 'react-redux-i18n' import moment from 'moment' -import saveAccountMiddleWare from '@chronobank/core/redux/session/saveAccountMiddleWare' import thunk from 'redux-thunk' import localStorage from 'utils/LocalStorage' import coreReducers from '@chronobank/core/redux/ducks' @@ -65,7 +64,6 @@ const configureStore = () => { const middleware = [ thunk, historyMiddleware, - saveAccountMiddleWare, ] if (isDevelopmentEnv) { diff --git a/src/redux/ducks.js b/src/redux/ducks.js index 9c009a397..74fdccb41 100644 --- a/src/redux/ducks.js +++ b/src/redux/ducks.js @@ -4,13 +4,11 @@ */ import drawer from './drawer/reducer' -import modals from './modals/reducer' import sides from './sides/reducer' import ui from './ui/reducer' const appReducers = { drawer, - modals, sides, ui, } diff --git a/src/redux/ui/actions.js b/src/redux/ui/actions.js index 54e4328bf..0f737eb3a 100644 --- a/src/redux/ui/actions.js +++ b/src/redux/ui/actions.js @@ -7,73 +7,8 @@ import moment from 'moment' import { setLocale } from 'react-redux-i18n' import localStorage from 'utils/LocalStorage' import ipfs from '@chronobank/core/utils/IPFS' -import userMonitorService from 'user/monitorService' -import { modalsOpen, modalsClose } from 'redux/modals/actions' -import { DUCK_WATCHER, WATCHER_TX_SET } from '@chronobank/core/redux/watcher/constants' import { CHANGE_WALLET_VIEW } from './constants' -export const startUserMonitorAndCloseModals = () => (dispatch) => { - userMonitorService.start() - dispatch(modalsClose()) -} - -export const stopUserMonitor = () => () => { - userMonitorService.stop() -} - -export const removeWatchersUserMonitor = () => () => { - userMonitorService - .removeAllListeners('active') - .stop() -} - -export const watchInitUserMonitor = () => (dispatch) => { - userMonitorService - .on('active', () => dispatch(modalsOpen({ - componentName: 'UserActiveDialog', - }))) - .start() -} - -export const showConfirmTransferModal = (dao, tx) => (dispatch) => { - dispatch(modalsOpen({ - componentName: 'ConfirmTransferDialog', - props: { - tx, - dao, - confirm: (tx) => dao.accept(tx), - reject: (tx) => dao.reject(tx), - }, - })) -} - -// TODO @ipavlenko: Do not use promise, use emitter, see showConfirmTransferModal -export const showConfirmTxModal = (estimateGas, localFeeMultiplier) => (dispatch, getState) => new Promise((resolve) => { - dispatch(modalsOpen({ - componentName: 'ConfirmTxDialog', - props: { - callback: (isConfirmed, tx) => resolve({ isConfirmed, updatedTx: tx }), - localFeeMultiplier, - handleEstimateGas: async (func, args, value, gasPriceMultiplier = 1) => { - if (!estimateGas) { - return - } - const { gasFee, gasLimit, gasPrice } = await estimateGas(func, args, value) - let tx = getState().get(DUCK_WATCHER).confirmTx - tx = tx - .gasPrice(gasPrice.mul(gasPriceMultiplier)) - .setGas(gasFee.mul(gasPriceMultiplier)) - .gasLimit(gasLimit) - dispatch({ type: WATCHER_TX_SET, tx }) - }, - }, - })) -}).catch((e) => { - // eslint-disable-next-line - console.error('Confirm modal error:', e) - return { isConfirmed: false } -}) - export const changeMomentLocale = (locale) => (dispatch) => { moment.locale(locale) localStorage.setLocale(locale) diff --git a/src/redux/ui/thunks.js b/src/redux/ui/thunks.js index 4f86c1b3d..9c2b3d5e2 100644 --- a/src/redux/ui/thunks.js +++ b/src/redux/ui/thunks.js @@ -7,6 +7,7 @@ import { destroyNetworkSession, login, logout } from '@chronobank/core/redux/ses import { change, formValueSelector } from 'redux-form/immutable' import { history } from 'redux/configureStore' import { navigateToVoting, navigateToRoot, navigateToWallets, navigateToPoll } from 'redux/ui/navigation' +import { removeWatchersUserMonitor } from '@chronobank/login-ui/redux/thunks' import { PTPoll } from '@chronobank/core/redux/voting/types' import * as VotingThunks from '@chronobank/core/redux/voting/thunks' import { removeWallet } from '@chronobank/core/redux/multisigWallet/actions' @@ -36,6 +37,7 @@ export const createPollAndNavigateToVotings = (poll: PollDetailsModel) => (dispa export const logoutAndNavigateToRoot = () => async (dispatch) => { try { + dispatch(removeWatchersUserMonitor()) dispatch(logout()) dispatch(destroyNetworkSessionInLocalStorage()) dispatch(navigateToRoot()) diff --git a/packages/core-dependencies/utils/clipboard.js b/src/utils/clipboard.js similarity index 100% rename from packages/core-dependencies/utils/clipboard.js rename to src/utils/clipboard.js