@webex/internal-plugin-feature 3.3.1-next.1 → 3.3.1

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/dist/feature.js CHANGED
@@ -46,16 +46,12 @@ var Feature = WebexCore.WebexPlugin.extend({
46
46
  },
47
47
  /**
48
48
  * Handles a feature toggle update from the server.
49
- * When one of these legacy feature gets updated, this event handler be triggered
50
- * * group-message-notifications
51
- * * mention-notifications
52
- * * thread-notifications,
53
- * This handler is being listened from mercury connection success method for the event "event:featureToggle_update"
54
- * @param {Object} feature
49
+ * @param {Object} envelope
55
50
  * @returns {undefined}
56
51
  */
57
- updateFeature: function updateFeature(feature) {
58
- if (feature) {
52
+ handleFeatureUpdate: function handleFeatureUpdate(envelope) {
53
+ if (envelope && envelope.data) {
54
+ var feature = envelope.data.featureToggle;
59
55
  var keyType = feature.type.toLowerCase();
60
56
  if (keyType === 'user' || keyType === 'developer') {
61
57
  this.webex.internal.device.features[keyType].add([feature], {
@@ -64,6 +60,14 @@ var Feature = WebexCore.WebexPlugin.extend({
64
60
  }
65
61
  }
66
62
  },
63
+ /**
64
+ * Register to listen for incoming feature events
65
+ * @instance
66
+ * @returns {undefined}
67
+ */
68
+ listen: function listen() {
69
+ this.listenTo(this.webex.internal.mercury, 'event:featureToggle_update', this.handleFeatureUpdate);
70
+ },
67
71
  /**
68
72
  * Issues request to server to set a value for a feature toggle.
69
73
  * @param {string} keyType <developer|user>
@@ -1 +1 @@
1
- {"version":3,"names":["require","_lodash","WebexCore","_interopRequireWildcard","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","Feature","WebexPlugin","extend","namespace","getFeature","keyType","key","options","_promise","reject","Error","feature","webex","internal","device","features","resolve","full","serialize","value","updateFeature","type","toLowerCase","add","merge","setFeature","_this","request","method","api","resource","concat","userId","body","mutable","val","then","res","setBundledFeatures","featureList","_this2","forEach","item","partitionedToggles","partition","featureToggles","user","developer","initialize","_len","arguments","length","args","Array","_key","_apply","listenToAndRun","trigger","bind","_default","exports"],"sources":["feature.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport {partition} from 'lodash';\nimport * as WebexCore from '@webex/webex-core';\n\nconst Feature = WebexCore.WebexPlugin.extend({\n namespace: 'Feature',\n\n /**\n * Returns the value of the requested feature toggle.\n * @param {string} keyType <developer|user|entitlement>\n * @param {string} key\n * @param {Object} options\n * @param {boolean} options.full to get full feature record including metadata.\n * @returns {string|boolean|number|FeatureModel|null}\n */\n getFeature(keyType, key, options) {\n if (keyType !== 'developer' && keyType !== 'user' && keyType !== 'entitlement') {\n return Promise.reject(\n new Error(\n 'Invalid feature keyType provided. Only `developer`, `user`, and `entitlement` feature toggles are permitted.'\n )\n );\n }\n\n options = options || {};\n\n const feature = this.webex.internal.device.features[keyType].get(key);\n\n if (!feature) {\n return Promise.resolve(null);\n }\n\n if (options.full) {\n return Promise.resolve(feature.serialize());\n }\n\n return Promise.resolve(feature.value);\n },\n\n /**\n * Handles a feature toggle update from the server.\n * When one of these legacy feature gets updated, this event handler be triggered\n * * group-message-notifications\n * * mention-notifications\n * * thread-notifications,\n * This handler is being listened from mercury connection success method for the event \"event:featureToggle_update\"\n * @param {Object} feature\n * @returns {undefined}\n */\n updateFeature(feature) {\n if (feature) {\n const keyType = feature.type.toLowerCase();\n\n if (keyType === 'user' || keyType === 'developer') {\n this.webex.internal.device.features[keyType].add([feature], {merge: true});\n }\n }\n },\n\n /**\n * Issues request to server to set a value for a feature toggle.\n * @param {string} keyType <developer|user>\n * @param {string} key\n * @param {string} value\n * @returns {Promise} Refreshes the local device and resolves with the features endpoint's response.\n */\n setFeature(keyType, key, value) {\n // Limit only to developer feature toggles for now.\n if (keyType !== 'developer' && keyType !== 'user') {\n return Promise.reject(new Error('Only `developer` and `user` feature toggles can be set.'));\n }\n\n return this.request({\n method: 'POST',\n api: 'feature',\n resource: `features/users/${this.webex.internal.device.userId}/${keyType}`,\n body: {\n key,\n mutable: true,\n val: value,\n },\n }).then((res) => this.webex.internal.device.features[keyType].add(res.body, {merge: true}));\n },\n\n /**\n * Issues request to server to set a value for a feature toggle.\n * @param {array} featureList - in the form of `Array<{ type: 'USER' | 'DEV', key: string, val: any }>`\n * @returns {Promise} Refreshes the local device and resolves with the features endpoint`s response.\n */\n setBundledFeatures(featureList) {\n featureList.forEach((item) => {\n item.mutable = item.mutable || 'true';\n if (item.type !== 'USER' && item.type !== 'DEV') {\n item.type = 'USER';\n }\n });\n\n return this.request({\n method: 'POST',\n api: 'feature',\n resource: `features/users/${this.webex.internal.device.userId}/toggles`,\n body: featureList,\n }).then((res) => {\n const partitionedToggles = partition(res.body.featureToggles, {type: 'USER'});\n\n this.webex.internal.device.features.user.add(partitionedToggles[0], {merge: true});\n this.webex.internal.device.features.developer.add(partitionedToggles[1], {merge: true});\n });\n },\n\n initialize(...args) {\n Reflect.apply(WebexCore.WebexPlugin.prototype.initialize, this, args);\n\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.developer',\n this.trigger.bind(this, 'change:developer')\n );\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.entitlement',\n this.trigger.bind(this, 'change:entitlement')\n );\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.user',\n this.trigger.bind(this, 'change:user')\n );\n },\n});\n\nexport default Feature;\n"],"mappings":"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"}
1
+ {"version":3,"names":["require","_lodash","WebexCore","_interopRequireWildcard","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","Feature","WebexPlugin","extend","namespace","getFeature","keyType","key","options","_promise","reject","Error","feature","webex","internal","device","features","resolve","full","serialize","value","handleFeatureUpdate","envelope","data","featureToggle","type","toLowerCase","add","merge","listen","listenTo","mercury","setFeature","_this","request","method","api","resource","concat","userId","body","mutable","val","then","res","setBundledFeatures","featureList","_this2","forEach","item","partitionedToggles","partition","featureToggles","user","developer","initialize","_len","arguments","length","args","Array","_key","_apply","listenToAndRun","trigger","bind","_default","exports"],"sources":["feature.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport {partition} from 'lodash';\nimport * as WebexCore from '@webex/webex-core';\n\nconst Feature = WebexCore.WebexPlugin.extend({\n namespace: 'Feature',\n\n /**\n * Returns the value of the requested feature toggle.\n * @param {string} keyType <developer|user|entitlement>\n * @param {string} key\n * @param {Object} options\n * @param {boolean} options.full to get full feature record including metadata.\n * @returns {string|boolean|number|FeatureModel|null}\n */\n getFeature(keyType, key, options) {\n if (keyType !== 'developer' && keyType !== 'user' && keyType !== 'entitlement') {\n return Promise.reject(\n new Error(\n 'Invalid feature keyType provided. Only `developer`, `user`, and `entitlement` feature toggles are permitted.'\n )\n );\n }\n\n options = options || {};\n\n const feature = this.webex.internal.device.features[keyType].get(key);\n\n if (!feature) {\n return Promise.resolve(null);\n }\n\n if (options.full) {\n return Promise.resolve(feature.serialize());\n }\n\n return Promise.resolve(feature.value);\n },\n\n /**\n * Handles a feature toggle update from the server.\n * @param {Object} envelope\n * @returns {undefined}\n */\n handleFeatureUpdate(envelope) {\n if (envelope && envelope.data) {\n const feature = envelope.data.featureToggle;\n const keyType = feature.type.toLowerCase();\n\n if (keyType === 'user' || keyType === 'developer') {\n this.webex.internal.device.features[keyType].add([feature], {merge: true});\n }\n }\n },\n\n /**\n * Register to listen for incoming feature events\n * @instance\n * @returns {undefined}\n */\n listen() {\n this.listenTo(\n this.webex.internal.mercury,\n 'event:featureToggle_update',\n this.handleFeatureUpdate\n );\n },\n\n /**\n * Issues request to server to set a value for a feature toggle.\n * @param {string} keyType <developer|user>\n * @param {string} key\n * @param {string} value\n * @returns {Promise} Refreshes the local device and resolves with the features endpoint's response.\n */\n setFeature(keyType, key, value) {\n // Limit only to developer feature toggles for now.\n if (keyType !== 'developer' && keyType !== 'user') {\n return Promise.reject(new Error('Only `developer` and `user` feature toggles can be set.'));\n }\n\n return this.request({\n method: 'POST',\n api: 'feature',\n resource: `features/users/${this.webex.internal.device.userId}/${keyType}`,\n body: {\n key,\n mutable: true,\n val: value,\n },\n }).then((res) => this.webex.internal.device.features[keyType].add(res.body, {merge: true}));\n },\n\n /**\n * Issues request to server to set a value for a feature toggle.\n * @param {array} featureList - in the form of `Array<{ type: 'USER' | 'DEV', key: string, val: any }>`\n * @returns {Promise} Refreshes the local device and resolves with the features endpoint`s response.\n */\n setBundledFeatures(featureList) {\n featureList.forEach((item) => {\n item.mutable = item.mutable || 'true';\n if (item.type !== 'USER' && item.type !== 'DEV') {\n item.type = 'USER';\n }\n });\n\n return this.request({\n method: 'POST',\n api: 'feature',\n resource: `features/users/${this.webex.internal.device.userId}/toggles`,\n body: featureList,\n }).then((res) => {\n const partitionedToggles = partition(res.body.featureToggles, {type: 'USER'});\n\n this.webex.internal.device.features.user.add(partitionedToggles[0], {merge: true});\n this.webex.internal.device.features.developer.add(partitionedToggles[1], {merge: true});\n });\n },\n\n initialize(...args) {\n Reflect.apply(WebexCore.WebexPlugin.prototype.initialize, this, args);\n\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.developer',\n this.trigger.bind(this, 'change:developer')\n );\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.entitlement',\n this.trigger.bind(this, 'change:entitlement')\n );\n this.listenToAndRun(\n this.webex,\n 'change:internal.device.features.user',\n this.trigger.bind(this, 'change:user')\n );\n },\n});\n\nexport default Feature;\n"],"mappings":";;;;;;;;;;;;;AAIAA,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,uBAAA,CAAAH,OAAA;AAA+C,SAAAI,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAN/C;AACA;AACA;;AAMA,IAAMY,OAAO,GAAGxB,SAAS,CAACyB,WAAW,CAACC,MAAM,CAAC;EAC3CC,SAAS,EAAE,SAAS;EAEpB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,WAAAA,WAACC,OAAO,EAAEC,GAAG,EAAEC,OAAO,EAAE;IAChC,IAAIF,OAAO,KAAK,WAAW,IAAIA,OAAO,KAAK,MAAM,IAAIA,OAAO,KAAK,aAAa,EAAE;MAC9E,OAAOG,QAAA,CAAAvB,OAAA,CAAQwB,MAAM,CACnB,IAAIC,KAAK,CACP,8GACF,CACF,CAAC;IACH;IAEAH,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,IAAMI,OAAO,GAAG,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACV,OAAO,CAAC,CAAClB,GAAG,CAACmB,GAAG,CAAC;IAErE,IAAI,CAACK,OAAO,EAAE;MACZ,OAAOH,QAAA,CAAAvB,OAAA,CAAQ+B,OAAO,CAAC,IAAI,CAAC;IAC9B;IAEA,IAAIT,OAAO,CAACU,IAAI,EAAE;MAChB,OAAOT,QAAA,CAAAvB,OAAA,CAAQ+B,OAAO,CAACL,OAAO,CAACO,SAAS,CAAC,CAAC,CAAC;IAC7C;IAEA,OAAOV,QAAA,CAAAvB,OAAA,CAAQ+B,OAAO,CAACL,OAAO,CAACQ,KAAK,CAAC;EACvC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,mBAAmB,WAAAA,oBAACC,QAAQ,EAAE;IAC5B,IAAIA,QAAQ,IAAIA,QAAQ,CAACC,IAAI,EAAE;MAC7B,IAAMX,OAAO,GAAGU,QAAQ,CAACC,IAAI,CAACC,aAAa;MAC3C,IAAMlB,OAAO,GAAGM,OAAO,CAACa,IAAI,CAACC,WAAW,CAAC,CAAC;MAE1C,IAAIpB,OAAO,KAAK,MAAM,IAAIA,OAAO,KAAK,WAAW,EAAE;QACjD,IAAI,CAACO,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACV,OAAO,CAAC,CAACqB,GAAG,CAAC,CAACf,OAAO,CAAC,EAAE;UAACgB,KAAK,EAAE;QAAI,CAAC,CAAC;MAC5E;IACF;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,MAAM,WAAAA,OAAA,EAAG;IACP,IAAI,CAACC,QAAQ,CACX,IAAI,CAACjB,KAAK,CAACC,QAAQ,CAACiB,OAAO,EAC3B,4BAA4B,EAC5B,IAAI,CAACV,mBACP,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEW,UAAU,WAAAA,WAAC1B,OAAO,EAAEC,GAAG,EAAEa,KAAK,EAAE;IAAA,IAAAa,KAAA;IAC9B;IACA,IAAI3B,OAAO,KAAK,WAAW,IAAIA,OAAO,KAAK,MAAM,EAAE;MACjD,OAAOG,QAAA,CAAAvB,OAAA,CAAQwB,MAAM,CAAC,IAAIC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7F;IAEA,OAAO,IAAI,CAACuB,OAAO,CAAC;MAClBC,MAAM,EAAE,MAAM;MACdC,GAAG,EAAE,SAAS;MACdC,QAAQ,oBAAAC,MAAA,CAAoB,IAAI,CAACzB,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACwB,MAAM,OAAAD,MAAA,CAAIhC,OAAO,CAAE;MAC1EkC,IAAI,EAAE;QACJjC,GAAG,EAAHA,GAAG;QACHkC,OAAO,EAAE,IAAI;QACbC,GAAG,EAAEtB;MACP;IACF,CAAC,CAAC,CAACuB,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKX,KAAI,CAACpB,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACV,OAAO,CAAC,CAACqB,GAAG,CAACiB,GAAG,CAACJ,IAAI,EAAE;QAACZ,KAAK,EAAE;MAAI,CAAC,CAAC;IAAA,EAAC;EAC7F,CAAC;EAED;AACF;AACA;AACA;AACA;EACEiB,kBAAkB,WAAAA,mBAACC,WAAW,EAAE;IAAA,IAAAC,MAAA;IAC9BD,WAAW,CAACE,OAAO,CAAC,UAACC,IAAI,EAAK;MAC5BA,IAAI,CAACR,OAAO,GAAGQ,IAAI,CAACR,OAAO,IAAI,MAAM;MACrC,IAAIQ,IAAI,CAACxB,IAAI,KAAK,MAAM,IAAIwB,IAAI,CAACxB,IAAI,KAAK,KAAK,EAAE;QAC/CwB,IAAI,CAACxB,IAAI,GAAG,MAAM;MACpB;IACF,CAAC,CAAC;IAEF,OAAO,IAAI,CAACS,OAAO,CAAC;MAClBC,MAAM,EAAE,MAAM;MACdC,GAAG,EAAE,SAAS;MACdC,QAAQ,oBAAAC,MAAA,CAAoB,IAAI,CAACzB,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACwB,MAAM,aAAU;MACvEC,IAAI,EAAEM;IACR,CAAC,CAAC,CAACH,IAAI,CAAC,UAACC,GAAG,EAAK;MACf,IAAMM,kBAAkB,GAAG,IAAAC,iBAAS,EAACP,GAAG,CAACJ,IAAI,CAACY,cAAc,EAAE;QAAC3B,IAAI,EAAE;MAAM,CAAC,CAAC;MAE7EsB,MAAI,CAAClC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACqC,IAAI,CAAC1B,GAAG,CAACuB,kBAAkB,CAAC,CAAC,CAAC,EAAE;QAACtB,KAAK,EAAE;MAAI,CAAC,CAAC;MAClFmB,MAAI,CAAClC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,QAAQ,CAACsC,SAAS,CAAC3B,GAAG,CAACuB,kBAAkB,CAAC,CAAC,CAAC,EAAE;QAACtB,KAAK,EAAE;MAAI,CAAC,CAAC;IACzF,CAAC,CAAC;EACJ,CAAC;EAED2B,UAAU,WAAAA,WAAA,EAAU;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAANC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAChB,IAAAC,MAAA,CAAA5E,OAAA,EAAcT,SAAS,CAACyB,WAAW,CAACN,SAAS,CAAC2D,UAAU,EAAE,IAAI,EAAEI,IAAI,CAAC;IAErE,IAAI,CAACI,cAAc,CACjB,IAAI,CAAClD,KAAK,EACV,2CAA2C,EAC3C,IAAI,CAACmD,OAAO,CAACC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAC5C,CAAC;IACD,IAAI,CAACF,cAAc,CACjB,IAAI,CAAClD,KAAK,EACV,6CAA6C,EAC7C,IAAI,CAACmD,OAAO,CAACC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAC9C,CAAC;IACD,IAAI,CAACF,cAAc,CACjB,IAAI,CAAClD,KAAK,EACV,sCAAsC,EACtC,IAAI,CAACmD,OAAO,CAACC,IAAI,CAAC,IAAI,EAAE,aAAa,CACvC,CAAC;EACH;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAjF,OAAA,GAEYe,OAAO"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ _Object$defineProperty(exports, "default", {
11
11
  return _feature.default;
12
12
  }
13
13
  });
14
+ require("@webex/internal-plugin-mercury");
14
15
  var _webexCore = require("@webex/webex-core");
15
16
  var _feature = _interopRequireDefault(require("./feature"));
16
17
  var _config = _interopRequireDefault(require("./config"));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_feature","_interopRequireDefault","_config","registerInternalPlugin","Feature","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Feature from './feature';\nimport config from './config';\n\nregisterInternalPlugin('feature', Feature, {\n config,\n});\n\nexport {default} from './feature';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AAPA;AACA;AACA;;AAOA,IAAAI,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["require","_webexCore","_feature","_interopRequireDefault","_config","registerInternalPlugin","Feature","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport '@webex/internal-plugin-mercury';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Feature from './feature';\nimport config from './config';\n\nregisterInternalPlugin('feature', Feature, {\n config,\n});\n\nexport {default} from './feature';\n"],"mappings":";;;;;;;;;;;;;AAGAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AARA;AACA;AACA;;AAQA,IAAAK,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA;AACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -35,19 +35,20 @@
35
35
  "@webex/eslint-config-legacy": "0.0.0",
36
36
  "@webex/jest-config-legacy": "0.0.0",
37
37
  "@webex/legacy-tools": "0.0.0",
38
- "@webex/test-helper-chai": "3.1.0-next.3",
39
- "@webex/test-helper-mocha": "3.1.0-next.3",
40
- "@webex/test-helper-mock-webex": "3.1.0-next.3",
41
- "@webex/test-helper-test-users": "3.1.0-next.3",
38
+ "@webex/test-helper-chai": "3.3.1",
39
+ "@webex/test-helper-mocha": "3.3.1",
40
+ "@webex/test-helper-mock-webex": "3.3.1",
41
+ "@webex/test-helper-test-users": "3.3.1",
42
42
  "eslint": "^8.24.0",
43
43
  "mocha": "^10.2.0",
44
44
  "prettier": "^2.7.1",
45
45
  "sinon": "^9.2.4"
46
46
  },
47
47
  "dependencies": {
48
- "@webex/internal-plugin-device": "3.1.0-next.3",
49
- "@webex/webex-core": "3.1.0-next.3",
48
+ "@webex/internal-plugin-device": "3.3.1",
49
+ "@webex/internal-plugin-mercury": "3.3.1",
50
+ "@webex/webex-core": "3.3.1",
50
51
  "lodash": "^4.17.21"
51
52
  },
52
- "version": "3.3.1-next.1"
53
+ "version": "3.3.1"
53
54
  }
package/src/feature.js CHANGED
@@ -43,16 +43,12 @@ const Feature = WebexCore.WebexPlugin.extend({
43
43
 
44
44
  /**
45
45
  * Handles a feature toggle update from the server.
46
- * When one of these legacy feature gets updated, this event handler be triggered
47
- * * group-message-notifications
48
- * * mention-notifications
49
- * * thread-notifications,
50
- * This handler is being listened from mercury connection success method for the event "event:featureToggle_update"
51
- * @param {Object} feature
46
+ * @param {Object} envelope
52
47
  * @returns {undefined}
53
48
  */
54
- updateFeature(feature) {
55
- if (feature) {
49
+ handleFeatureUpdate(envelope) {
50
+ if (envelope && envelope.data) {
51
+ const feature = envelope.data.featureToggle;
56
52
  const keyType = feature.type.toLowerCase();
57
53
 
58
54
  if (keyType === 'user' || keyType === 'developer') {
@@ -61,6 +57,19 @@ const Feature = WebexCore.WebexPlugin.extend({
61
57
  }
62
58
  },
63
59
 
60
+ /**
61
+ * Register to listen for incoming feature events
62
+ * @instance
63
+ * @returns {undefined}
64
+ */
65
+ listen() {
66
+ this.listenTo(
67
+ this.webex.internal.mercury,
68
+ 'event:featureToggle_update',
69
+ this.handleFeatureUpdate
70
+ );
71
+ },
72
+
64
73
  /**
65
74
  * Issues request to server to set a value for a feature toggle.
66
75
  * @param {string} keyType <developer|user>
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
+ import '@webex/internal-plugin-mercury';
4
5
 
5
6
  import {registerInternalPlugin} from '@webex/webex-core';
6
7
 
@@ -98,20 +98,24 @@ describe('plugin-feature', () => {
98
98
  });
99
99
  });
100
100
 
101
- describe('#updateFeature', () => {
101
+ describe('#handleFeatureUpdate', () => {
102
102
  it('updates the feature toggle', () => {
103
103
  const key = 'featureName';
104
104
  const keyType = 'user';
105
- const feature = {
106
- key,
107
- mutable: true,
108
- type: 'USER',
109
- val: 'true',
110
- value: true,
105
+ const envelope = {
106
+ data: {
107
+ featureToggle: {
108
+ key,
109
+ mutable: true,
110
+ type: 'USER',
111
+ val: 'true',
112
+ value: true,
113
+ },
114
+ },
111
115
  };
112
116
 
113
117
  sinon.spy(webex.internal.device.features[keyType], 'add');
114
- webex.internal.feature.updateFeature(feature);
118
+ webex.internal.feature.handleFeatureUpdate(envelope);
115
119
  assert.called(webex.internal.device.features[keyType].add);
116
120
  });
117
121
  });