diff --git a/src/components/accounts/AccountSwitcher.jsx b/src/components/accounts/AccountSwitcher.jsx index 856a939..03d7b5f 100644 --- a/src/components/accounts/AccountSwitcher.jsx +++ b/src/components/accounts/AccountSwitcher.jsx @@ -4,6 +4,7 @@ import classNames from 'classnames'; import { Link } from 'react-router'; import { FormattedMessage as Message } from 'react-intl'; +import loader from 'services/loader'; import { skins, SKIN_DARK, COLOR_WHITE } from 'components/ui'; import { Button } from 'components/ui/form'; @@ -137,9 +138,12 @@ export class AccountSwitcher extends Component { onSwitch = (account) => (event) => { event.preventDefault(); + loader.show(); + this.props.switchAccount(account) .then(() => this.props.onAfterAction()) - .then(() => this.props.onSwitch(account)); + .then(() => this.props.onSwitch(account)) + .finally(() => loader.hide()); }; onRemove = (account) => (event) => { diff --git a/src/index.js b/src/index.js index a5d083b..2c7c58e 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,7 @@ import { IntlProvider } from 'components/i18n'; import routesFactory from 'routes'; import storeFactory from 'storeFactory'; import bsodFactory from 'components/ui/bsod/factory'; +import loader from 'services/loader'; const store = storeFactory(); @@ -52,7 +53,7 @@ Promise.all([ function stopLoading() { - document.getElementById('loader').classList.remove('is-active'); + loader.hide(); } import scrollTo from 'components/ui/scrollTo'; diff --git a/src/services/loader.js b/src/services/loader.js new file mode 100644 index 0000000..c1d8619 --- /dev/null +++ b/src/services/loader.js @@ -0,0 +1,9 @@ +export default { + show() { + document.getElementById('loader').classList.add('is-active'); + }, + + hide() { + document.getElementById('loader').classList.remove('is-active'); + } +};