@streamlayer/sdk-web-features 0.11.22 → 0.11.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -24,6 +24,7 @@ declare module '@streamlayer/sdk-web-interfaces' {
24
24
  getFeature: <T extends FeatureType = FeatureType>(featureType: T) => (T extends FeatureType.GAMES ? Gamification : Feature) | undefined;
25
25
  getActiveFeature: SingleStore<FeatureType>['getStore'];
26
26
  closeFeature: (destroy?: boolean) => void;
27
+ featuresList: SingleStore<Set<FeatureType>>;
27
28
  }
28
29
  }
29
30
  export declare const features: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
package/lib/index.js CHANGED
@@ -18,6 +18,7 @@ export const initFeature = (overlay, source, instance) => {
18
18
  export { FeatureSource } from '@streamlayer/sdk-web-interfaces';
19
19
  export const features = (instance, opts, done) => {
20
20
  instance.features = new Map();
21
+ instance.sdk.featuresList = new SingleStore(createSingleStore(new Set()), 'features-list');
21
22
  instance.activeFeature = new SingleStore(createSingleStore(FeatureType.UNSET), 'activeFeature');
22
23
  instance.sdk.getFeatures = () => instance.features;
23
24
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -32,6 +33,11 @@ export const features = (instance, opts, done) => {
32
33
  instance.activeFeature.setValue(FeatureType.UNSET);
33
34
  if (destroy && activeFeature) {
34
35
  instance.features.delete(activeFeature);
36
+ const prev = instance.sdk.featuresList.getValue();
37
+ if (prev) {
38
+ prev.delete(activeFeature);
39
+ }
40
+ instance.sdk.featuresList.setValue(prev);
35
41
  }
36
42
  };
37
43
  /**
@@ -41,6 +47,14 @@ export const features = (instance, opts, done) => {
41
47
  if (overlay.type in AvailableFeatures && !instance.features.has(overlay.type)) {
42
48
  const feature = initFeature(overlay, source, instance);
43
49
  instance.features.set(overlay.type, feature);
50
+ let prev = instance.sdk.featuresList.getValue();
51
+ if (prev) {
52
+ prev.add(overlay.type);
53
+ }
54
+ else {
55
+ prev = new Set([overlay.type]);
56
+ }
57
+ instance.sdk.featuresList.setValue(new Set(prev));
44
58
  }
45
59
  };
46
60
  instance.updateFeature = (overlay, source) => {
@@ -48,12 +62,18 @@ export const features = (instance, opts, done) => {
48
62
  };
49
63
  instance.destroyFeature = (overlay) => {
50
64
  instance.features.delete(overlay.type);
65
+ const prev = instance.sdk.featuresList.getValue();
66
+ if (prev) {
67
+ prev.delete(overlay.type);
68
+ }
69
+ instance.sdk.featuresList.setValue(new Set(prev));
51
70
  };
52
71
  instance.reinitializeFeatures = async () => {
53
72
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
54
73
  // @ts-ignore
55
74
  const organizationSettings = await instance.stores.organizationSettings.getValue();
56
75
  instance.features.clear();
76
+ instance.sdk.featuresList.setValue(new Set());
57
77
  for (const overlay of organizationSettings?.overlays || []) {
58
78
  instance.initFeature(overlay, FeatureSource.ORGANIZATION);
59
79
  }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@streamlayer/sdk-web-features",
3
3
  "peerDependencies": {
4
- "@streamlayer/feature-gamification": "^0.37.4",
5
- "@streamlayer/sdk-web-core": "^0.21.2",
6
- "@streamlayer/sdk-web-interfaces": "^0.20.5",
7
- "@streamlayer/sdk-web-types": "^0.22.3"
4
+ "@streamlayer/feature-gamification": "^0.39.0",
5
+ "@streamlayer/sdk-web-core": "^0.22.0",
6
+ "@streamlayer/sdk-web-interfaces": "^0.21.0",
7
+ "@streamlayer/sdk-web-types": "^0.23.0"
8
8
  },
9
9
  "devDependencies": {
10
10
  "tslib": "^2.6.2"
11
11
  },
12
- "version": "0.11.22",
12
+ "version": "0.11.24",
13
13
  "type": "module",
14
14
  "main": "./lib/index.js",
15
15
  "typings": "./lib/index.d.ts",