From d615e1daed398c6ba35e7781d0193245f1607800 Mon Sep 17 00:00:00 2001 From: adrinr Date: Tue, 28 Mar 2023 11:01:18 +0100 Subject: [PATCH] Create feature store --- .../builder/src/stores/portal/features.js | 54 +++++++++++++++++++ packages/builder/src/stores/portal/index.js | 1 + 2 files changed, 55 insertions(+) create mode 100644 packages/builder/src/stores/portal/features.js diff --git a/packages/builder/src/stores/portal/features.js b/packages/builder/src/stores/portal/features.js new file mode 100644 index 0000000000..977453e6e6 --- /dev/null +++ b/packages/builder/src/stores/portal/features.js @@ -0,0 +1,54 @@ +import { writable } from "svelte/store" +import { API } from "api" +import { licensing } from "./licensing" +import { ConfigType } from "../../../../types/src/documents" + +export const createFeatureStore = () => { + const internalStore = writable({ + scim: { + isFeatureFlagEnabled: false, + isConfigFlagEnabled: false, + }, + }) + + const store = writable({ + isScimEnabled: false, + }) + + internalStore.subscribe(s => { + store.update(state => ({ + ...state, + isScimEnabled: s.scim.isFeatureFlagEnabled && s.scim.isConfigFlagEnabled, + })) + }) + + licensing.subscribe(v => { + internalStore.update(state => ({ + ...state, + scim: { + ...state.scim, + isFeatureFlagEnabled: v.scimEnabled, + }, + })) + }) + + const actions = { + init: async () => { + const scimConfig = await API.getConfig(ConfigType.SCIM) + internalStore.update(state => ({ + ...state, + scim: { + ...state.scim, + isConfigFlagEnabled: scimConfig.enabled, + }, + })) + }, + } + + return { + subscribe: store.subscribe, + ...actions, + } +} + +export const features = createFeatureStore() diff --git a/packages/builder/src/stores/portal/index.js b/packages/builder/src/stores/portal/index.js index e8f7853165..7f5ce980fa 100644 --- a/packages/builder/src/stores/portal/index.js +++ b/packages/builder/src/stores/portal/index.js @@ -14,3 +14,4 @@ export { overview } from "./overview" export { environment } from "./environment" export { menu } from "./menu" export { auditLogs } from "./auditLogs" +export { features } from "./features"