forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFeatureGate.js
More file actions
1 lines (1 loc) · 1.14 KB
/
FeatureGate.js
File metadata and controls
1 lines (1 loc) · 1.14 KB
1
define(function(require,exports,module){const FEATURE_REGISTERED="featureGateRegistered",ENABLED="enabled",DISABLED="disabled";let EventDispatcher=require("utils/EventDispatcher"),_FeatureGateMap={};function registerFeatureGate(featureName,enabledDefault){"boolean"==typeof enabledDefault?(_FeatureGateMap[featureName]=enabledDefault,exports.trigger(FEATURE_REGISTERED,featureName,enabledDefault)):console.warn(`Feature gate ${featureName} ignoring invalid default value: ${enabledDefault}`)}function getAllRegisteredFeatures(){return Object.keys(_FeatureGateMap)}function isFeatureEnabled(featureName){let userOverRide=PhStore.getItem(`FeatureGate-${featureName}`);return userOverRide===ENABLED||userOverRide!==DISABLED&&!0===_FeatureGateMap[featureName]}function setFeatureEnabled(featureName,isEnabled){PhStore.setItem(`FeatureGate-${featureName}`,isEnabled?ENABLED:DISABLED)}EventDispatcher.makeEventDispatcher(exports),exports.registerFeatureGate=registerFeatureGate,exports.getAllRegisteredFeatures=getAllRegisteredFeatures,exports.isFeatureEnabled=isFeatureEnabled,exports.setFeatureEnabled=setFeatureEnabled,exports.FEATURE_REGISTERED=FEATURE_REGISTERED});