aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/workspaces/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/features/workspaces/index.js')
-rw-r--r--src/features/workspaces/index.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/features/workspaces/index.js b/src/features/workspaces/index.js
new file mode 100644
index 000000000..b7e1090e8
--- /dev/null
+++ b/src/features/workspaces/index.js
@@ -0,0 +1,34 @@
1import { observable, reaction } from 'mobx';
2import { merge } from 'lodash';
3import WorkspacesStore from './store';
4import api from './api';
5
6const debug = require('debug')('Franz:feature:workspaces');
7
8let store = null;
9const defaultState = { workspaces: [] };
10
11export const state = observable(defaultState);
12
13export default function initWorkspaces(stores, actions) {
14 const { features, user } = stores;
15 reaction(
16 () => features.features.isWorkspaceEnabled && user.isLoggedIn,
17 (isEnabled) => {
18 if (isEnabled) {
19 debug('Initializing `workspaces` feature');
20 store = new WorkspacesStore(stores, api, actions, state);
21 store.initialize();
22 } else if (store) {
23 debug('Disabling `workspaces` feature');
24 store.teardown();
25 store = null;
26 // Reset state to default
27 merge(state, defaultState);
28 }
29 },
30 {
31 fireImmediately: true,
32 },
33 );
34}