From a94ed659846f0bc93c05bccf0c96785b91e5c78f Mon Sep 17 00:00:00 2001 From: Markandan R Date: Tue, 22 Jun 2021 10:56:34 +0530 Subject: Removed the cyclical dependency (#1519) (#1539) --- src/config.js | 8 +++++++ src/containers/settings/EditSettingsScreen.js | 3 +-- src/features/basicAuth/Component.js | 2 +- src/features/basicAuth/index.js | 30 +++------------------------ src/features/basicAuth/store.js | 30 +++++++++++++++++++++++++++ src/features/communityRecipes/index.js | 2 -- src/features/delayApp/Component.js | 2 +- src/features/delayApp/constants.js | 6 ++++++ src/features/delayApp/index.js | 7 +------ src/features/nightlyBuilds/Component.js | 2 +- src/features/nightlyBuilds/index.js | 8 ++----- src/features/nightlyBuilds/store.js | 0 src/features/publishDebugInfo/Component.js | 2 +- src/features/publishDebugInfo/index.js | 9 ++------ src/features/publishDebugInfo/store.js | 7 +++++++ src/features/quickSwitch/Component.js | 2 +- src/features/quickSwitch/index.js | 9 ++------ src/features/quickSwitch/store.js | 7 +++++++ src/features/serviceLimit/index.js | 2 -- src/features/serviceLimit/store.js | 2 +- src/features/shareFranz/Component.js | 2 +- src/features/shareFranz/index.js | 11 +++------- src/features/shareFranz/store.js | 8 +++++++ src/features/todos/components/TodosWebview.js | 2 +- src/features/todos/constants.js | 4 ++++ src/features/todos/containers/TodosScreen.js | 3 ++- src/features/todos/index.js | 10 --------- src/features/todos/store.js | 15 ++++++++------ src/stores/UserStore.js | 3 +-- 29 files changed, 104 insertions(+), 94 deletions(-) create mode 100644 src/features/basicAuth/store.js create mode 100644 src/features/delayApp/constants.js create mode 100644 src/features/nightlyBuilds/store.js create mode 100644 src/features/publishDebugInfo/store.js create mode 100644 src/features/quickSwitch/store.js create mode 100644 src/features/shareFranz/store.js diff --git a/src/config.js b/src/config.js index 27ac6be0b..d96a6068b 100644 --- a/src/config.js +++ b/src/config.js @@ -287,3 +287,11 @@ export const PLANS_MAPPING = { export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false; + +export const DEFAULT_SERVICE_LIMIT = 3; + +export const DEFAULT_TODOS_WIDTH = 300; +export const TODOS_MIN_WIDTH = 200; +export const DEFAULT_TODOS_VISIBLE = true; +export const DEFAULT_IS_FEATURE_ENABLED_BY_USER = true; +export const TODOS_PARTITION_ID = 'persist:todos'; diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 2b2d7277b..0a8258478 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js @@ -11,7 +11,7 @@ import Form from '../../lib/Form'; import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; import { DEFAULT_APP_SETTINGS, HIBERNATION_STRATEGIES, SIDEBAR_WIDTH, ICON_SIZES, NAVIGATION_BAR_BEHAVIOURS, SEARCH_ENGINE_NAMES, TODO_APPS, - DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, + DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, DEFAULT_IS_FEATURE_ENABLED_BY_USER, } from '../../config'; import { isMac } from '../../environment'; import { config as spellcheckerConfig } from '../../features/spellchecker'; @@ -24,7 +24,6 @@ import EditSettingsForm from '../../components/settings/settings/EditSettingsFor import ErrorBoundary from '../../components/util/ErrorBoundary'; import globalMessages from '../../i18n/globalMessages'; -import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; import WorkspacesStore from '../../features/workspaces/store'; import ServicesStore from '../../stores/ServicesStore'; diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js index ba9ae2273..14184f80b 100644 --- a/src/features/basicAuth/Component.js +++ b/src/features/basicAuth/Component.js @@ -13,7 +13,7 @@ import { resetState, sendCredentials, cancelLogin, -} from '.'; +} from './store'; import Form from './Form'; import styles from './styles'; diff --git a/src/features/basicAuth/index.js b/src/features/basicAuth/index.js index 51625ea55..e43d51d15 100644 --- a/src/features/basicAuth/index.js +++ b/src/features/basicAuth/index.js @@ -1,21 +1,12 @@ import { ipcRenderer } from 'electron'; -import { observable } from 'mobx'; import BasicAuthComponent from './Component'; -const debug = require('debug')('Ferdi:feature:basicAuth'); - -const defaultState = { - isModalVisible: true, - service: null, - authInfo: null, -}; +import { state as ModalState } from './store'; -export const state = observable(defaultState); +const debug = require('debug')('Ferdi:feature:basicAuth'); -export function resetState() { - Object.assign(state, defaultState); -} +const state = ModalState; export default function initialize() { debug('Initialize basicAuth feature'); @@ -40,19 +31,4 @@ export function mainIpcHandler(mainWindow, authInfo) { }); } -export function sendCredentials(user, password) { - debug('Sending credentials to main', user, password); - - ipcRenderer.send('feature-basic-auth-credentials', { - user, - password, - }); -} - -export function cancelLogin() { - debug('Cancel basic auth event'); - - ipcRenderer.send('feature-basic-auth-cancel'); -} - export const Component = BasicAuthComponent; diff --git a/src/features/basicAuth/store.js b/src/features/basicAuth/store.js new file mode 100644 index 000000000..0713ff572 --- /dev/null +++ b/src/features/basicAuth/store.js @@ -0,0 +1,30 @@ +import { observable } from 'mobx'; +import { ipcRenderer } from 'electron'; + +const debug = require('debug')('Ferdi:feature:basicAuth'); + +const defaultState = { + isModalVisible: true, + service: null, + authInfo: null, +}; + +export const state = observable(defaultState); + +export function resetState() { + Object.assign(state, defaultState); +} +export function sendCredentials(user, password) { + debug('Sending credentials to main', user, password); + + ipcRenderer.send('feature-basic-auth-credentials', { + user, + password, + }); +} + +export function cancelLogin() { + debug('Cancel basic auth event'); + + ipcRenderer.send('feature-basic-auth-cancel'); +} diff --git a/src/features/communityRecipes/index.js b/src/features/communityRecipes/index.js index 553b423f3..39f7e9cd6 100644 --- a/src/features/communityRecipes/index.js +++ b/src/features/communityRecipes/index.js @@ -3,8 +3,6 @@ import { CommunityRecipesStore } from './store'; const debug = require('debug')('Ferdi:feature:communityRecipes'); -export const DEFAULT_SERVICE_LIMIT = 3; - export const communityRecipesStore = new CommunityRecipesStore(); export default function initCommunityRecipes(stores, actions) { diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js index 81f89bc52..4ea37f88d 100644 --- a/src/features/delayApp/Component.js +++ b/src/features/delayApp/Component.js @@ -6,7 +6,7 @@ import injectSheet from 'react-jss'; import { Button } from '@meetfranz/forms'; -import { config } from '.'; +import { config } from './constants'; import styles from './styles'; import UserStore from '../../stores/UserStore'; diff --git a/src/features/delayApp/constants.js b/src/features/delayApp/constants.js new file mode 100644 index 000000000..72cc4246e --- /dev/null +++ b/src/features/delayApp/constants.js @@ -0,0 +1,6 @@ +import { DEFAULT_FEATURES_CONFIG } from '../../config'; + +export const config = { + delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset, + delayDuration: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.wait, +}; diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index 51bd887a2..5ef01a47e 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js @@ -1,17 +1,12 @@ import { autorun, observable, reaction } from 'mobx'; import moment from 'moment'; import DelayAppComponent from './Component'; - +import { config } from './constants'; import { DEFAULT_FEATURES_CONFIG } from '../../config'; import { getUserWorkspacesRequest } from '../workspaces/api'; const debug = require('debug')('Ferdi:feature:delayApp'); -export const config = { - delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset, - delayDuration: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.wait, -}; - export const state = observable({ isDelayAppScreenVisible: DEFAULT_FEATURES_CONFIG.needToWaitToProceed, }); diff --git a/src/features/nightlyBuilds/Component.js b/src/features/nightlyBuilds/Component.js index b340a0a7e..3133672ec 100644 --- a/src/features/nightlyBuilds/Component.js +++ b/src/features/nightlyBuilds/Component.js @@ -7,7 +7,7 @@ import { H1 } from '@meetfranz/ui'; import Modal from '../../components/ui/Modal'; import Button from '../../components/ui/Button'; -import { state as ModalState } from '.'; +import { state as ModalState } from './store'; import SettingsStore from '../../stores/SettingsStore'; const messages = defineMessages({ diff --git a/src/features/nightlyBuilds/index.js b/src/features/nightlyBuilds/index.js index 34fe37d4d..89bcb5cb3 100644 --- a/src/features/nightlyBuilds/index.js +++ b/src/features/nightlyBuilds/index.js @@ -1,14 +1,10 @@ -import { observable } from 'mobx'; +import { state as ModalState } from './store'; export { default as Component } from './Component'; const debug = require('debug')('Ferdi:feature:nightlyBuilds'); -const defaultState = { - isModalVisible: false, -}; - -export const state = observable(defaultState); +const state = ModalState; export default function initialize() { debug('Initialize nightlyBuilds feature'); diff --git a/src/features/nightlyBuilds/store.js b/src/features/nightlyBuilds/store.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/features/publishDebugInfo/Component.js b/src/features/publishDebugInfo/Component.js index 1f1b0ed45..63f15fe7b 100644 --- a/src/features/publishDebugInfo/Component.js +++ b/src/features/publishDebugInfo/Component.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { defineMessages, intlShape } from 'react-intl'; import injectSheet from 'react-jss'; -import { state as ModalState } from '.'; +import { state as ModalState } from './store'; import { sendAuthRequest } from '../../api/utils/auth'; import Button from '../../components/ui/Button'; import Input from '../../components/ui/Input'; diff --git a/src/features/publishDebugInfo/index.js b/src/features/publishDebugInfo/index.js index 7d0d310c2..51780a34e 100644 --- a/src/features/publishDebugInfo/index.js +++ b/src/features/publishDebugInfo/index.js @@ -1,15 +1,10 @@ -import { observable } from 'mobx'; +import { state as ModalState } from './store'; export { default as Component } from './Component'; +const state = ModalState; const debug = require('debug')('Ferdi:feature:publishDebugInfo'); -const defaultState = { - isModalVisible: false, -}; - -export const state = observable(defaultState); - export default function initialize() { debug('Initialize publishDebugInfo feature'); diff --git a/src/features/publishDebugInfo/store.js b/src/features/publishDebugInfo/store.js new file mode 100644 index 000000000..ed06e5a7d --- /dev/null +++ b/src/features/publishDebugInfo/store.js @@ -0,0 +1,7 @@ +import { observable } from 'mobx'; + +const defaultState = { + isModalVisible: false, +}; + +export const state = observable(defaultState); diff --git a/src/features/quickSwitch/Component.js b/src/features/quickSwitch/Component.js index c5c320f52..01cd3b09b 100644 --- a/src/features/quickSwitch/Component.js +++ b/src/features/quickSwitch/Component.js @@ -10,7 +10,7 @@ import { H1 } from '@meetfranz/ui'; import { compact, invoke } from 'lodash'; import Modal from '../../components/ui/Modal'; -import { state as ModalState } from '.'; +import { state as ModalState } from './store'; import ServicesStore from '../../stores/ServicesStore'; const messages = defineMessages({ diff --git a/src/features/quickSwitch/index.js b/src/features/quickSwitch/index.js index c57fad366..a16017219 100644 --- a/src/features/quickSwitch/index.js +++ b/src/features/quickSwitch/index.js @@ -1,15 +1,10 @@ -import { observable } from 'mobx'; +import { state as ModalState } from './store'; export { default as Component } from './Component'; +const state = ModalState; const debug = require('debug')('Ferdi:feature:quickSwitch'); -const defaultState = { - isModalVisible: false, -}; - -export const state = observable(defaultState); - export default function initialize() { debug('Initialize quickSwitch feature'); diff --git a/src/features/quickSwitch/store.js b/src/features/quickSwitch/store.js new file mode 100644 index 000000000..ed06e5a7d --- /dev/null +++ b/src/features/quickSwitch/store.js @@ -0,0 +1,7 @@ +import { observable } from 'mobx'; + +const defaultState = { + isModalVisible: false, +}; + +export const state = observable(defaultState); diff --git a/src/features/serviceLimit/index.js b/src/features/serviceLimit/index.js index fa93bb615..f867e3d87 100644 --- a/src/features/serviceLimit/index.js +++ b/src/features/serviceLimit/index.js @@ -3,8 +3,6 @@ import { ServiceLimitStore } from './store'; const debug = require('debug')('Ferdi:feature:serviceLimit'); -export const DEFAULT_SERVICE_LIMIT = 3; - let store = null; export const serviceLimitStore = new ServiceLimitStore(); diff --git a/src/features/serviceLimit/store.js b/src/features/serviceLimit/store.js index 6510e2872..b1e55a1fc 100644 --- a/src/features/serviceLimit/store.js +++ b/src/features/serviceLimit/store.js @@ -1,6 +1,6 @@ import { computed, observable } from 'mobx'; import { FeatureStore } from '../utils/FeatureStore'; -import { DEFAULT_SERVICE_LIMIT } from '.'; +import { DEFAULT_SERVICE_LIMIT } from '../../config'; const debug = require('debug')('Ferdi:feature:serviceLimit:store'); diff --git a/src/features/shareFranz/Component.js b/src/features/shareFranz/Component.js index 405fb0ab5..f7f8dc41c 100644 --- a/src/features/shareFranz/Component.js +++ b/src/features/shareFranz/Component.js @@ -10,7 +10,7 @@ import { mdiHeart, mdiEmail, mdiFacebookBox, mdiTwitter, } from '@mdi/js'; import Modal from '../../components/ui/Modal'; -import { state } from '.'; +import { state } from './store'; import ServicesStore from '../../stores/ServicesStore'; const messages = defineMessages({ diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js index 04e3684ae..34475f674 100644 --- a/src/features/shareFranz/index.js +++ b/src/features/shareFranz/index.js @@ -1,6 +1,6 @@ -import { observable, reaction } from 'mobx'; +import { reaction } from 'mobx'; import ms from 'ms'; - +import { state as ModalState } from './store'; import { state as delayAppState } from '../delayApp'; import { planSelectionStore } from '../planSelection'; @@ -8,12 +8,7 @@ export { default as Component } from './Component'; const debug = require('debug')('Ferdi:feature:shareFranz'); -const defaultState = { - isModalVisible: false, - lastShown: null, -}; - -export const state = observable(defaultState); +const state = ModalState; export default function initialize(stores) { debug('Initialize shareFerdi feature'); diff --git a/src/features/shareFranz/store.js b/src/features/shareFranz/store.js new file mode 100644 index 000000000..c637e9eff --- /dev/null +++ b/src/features/shareFranz/store.js @@ -0,0 +1,8 @@ +import { observable } from 'mobx'; + +const defaultState = { + isModalVisible: false, + lastShown: null, +}; + +export const state = observable(defaultState); diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js index 03bb5efe8..dccb818a6 100644 --- a/src/features/todos/components/TodosWebview.js +++ b/src/features/todos/components/TodosWebview.js @@ -5,7 +5,7 @@ import injectSheet from 'react-jss'; import Webview from 'react-electron-web-view'; import classnames from 'classnames'; -import { TODOS_PARTITION_ID } from '..'; +import { TODOS_PARTITION_ID } from '../../../config'; const styles = theme => ({ root: { diff --git a/src/features/todos/constants.js b/src/features/todos/constants.js index 2e8a431cc..303a7a16e 100644 --- a/src/features/todos/constants.js +++ b/src/features/todos/constants.js @@ -2,3 +2,7 @@ export const IPC = { TODOS_HOST_CHANNEL: 'TODOS_HOST_CHANNEL', TODOS_CLIENT_CHANNEL: 'TODOS_CLIENT_CHANNEL', }; + +export const TODOS_ROUTES = { + TARGET: '/todos', +}; diff --git a/src/features/todos/containers/TodosScreen.js b/src/features/todos/containers/TodosScreen.js index 96147d5ab..6425746e6 100644 --- a/src/features/todos/containers/TodosScreen.js +++ b/src/features/todos/containers/TodosScreen.js @@ -5,7 +5,8 @@ import PropTypes from 'prop-types'; import FeaturesStore from '../../../stores/FeaturesStore'; import TodosWebview from '../components/TodosWebview'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; -import { TODOS_MIN_WIDTH, todosStore } from '..'; +import { todosStore } from '..'; +import { TODOS_MIN_WIDTH } from '../../../config'; import { todoActions } from '../actions'; import ServicesStore from '../../../stores/ServicesStore'; diff --git a/src/features/todos/index.js b/src/features/todos/index.js index b6d13e5e1..1c6c9179a 100644 --- a/src/features/todos/index.js +++ b/src/features/todos/index.js @@ -5,16 +5,6 @@ const debug = require('debug')('Ferdi:feature:todos'); export const GA_CATEGORY_TODOS = 'Todos'; -export const DEFAULT_TODOS_WIDTH = 300; -export const TODOS_MIN_WIDTH = 200; -export const DEFAULT_TODOS_VISIBLE = true; -export const DEFAULT_IS_FEATURE_ENABLED_BY_USER = true; -export const TODOS_PARTITION_ID = 'persist:todos'; - -export const TODOS_ROUTES = { - TARGET: '/todos', -}; - export const todosStore = new TodoStore(); export default function initTodos(stores, actions) { diff --git a/src/features/todos/store.js b/src/features/todos/store.js index 4febd7bb1..429507927 100644 --- a/src/features/todos/store.js +++ b/src/features/todos/store.js @@ -7,17 +7,20 @@ import { import localStorage from 'mobx-localstorage'; import { todoActions } from './actions'; -import { CUSTOM_TODO_SERVICE, TODO_SERVICE_RECIPE_IDS } from '../../config'; +import { + CUSTOM_TODO_SERVICE, + TODO_SERVICE_RECIPE_IDS, + DEFAULT_TODOS_WIDTH, + TODOS_MIN_WIDTH, + DEFAULT_TODOS_VISIBLE, + DEFAULT_IS_FEATURE_ENABLED_BY_USER, +} from '../../config'; import { isValidExternalURL } from '../../helpers/url-helpers'; import { FeatureStore } from '../utils/FeatureStore'; import { createReactions } from '../../stores/lib/Reaction'; import { createActionBindings } from '../utils/ActionBinding'; -import { - DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE, TODOS_ROUTES, DEFAULT_IS_FEATURE_ENABLED_BY_USER, -} from '.'; -import { IPC } from './constants'; +import { IPC, TODOS_ROUTES } from './constants'; import { state as delayAppState } from '../delayApp'; - import UserAgent from '../../models/UserAgent'; const debug = require('debug')('Ferdi:feature:todos:store'); diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 2cb6affa8..7947e5a27 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js @@ -11,8 +11,7 @@ import Request from './lib/Request'; import CachedRequest from './lib/CachedRequest'; import { sleep } from '../helpers/async-helpers'; import { getPlan } from '../helpers/plan-helpers'; -import { PLANS } from '../config'; -import { TODOS_PARTITION_ID } from '../features/todos'; +import { PLANS, TODOS_PARTITION_ID } from '../config'; const debug = require('debug')('Ferdi:UserStore'); -- cgit v1.2.3-70-g09d2