1234567891011121314151617181920212223242526272829303132 |
- // @flow
-
- import { getAppProp } from '../app';
- import { toState } from '../redux';
-
- /**
- * Gets the value of a specific feature flag.
- *
- * @param {Function|Object} stateful - The redux store or {@code getState}
- * function.
- * @param {string} flag - The name of the React {@code Component} prop of
- * the currently mounted {@code App} to get.
- * @param {*} defaultValue - A default value for the flag, in case it's not defined.
- * @returns {*} The value of the specified React {@code Compoennt} prop of the
- * currently mounted {@code App}.
- */
- export function getFeatureFlag(stateful: Function | Object, flag: string, defaultValue: any) {
- const state = toState(stateful)['features/base/flags'];
-
- if (state) {
- const value = state[flag];
-
- if (typeof value !== 'undefined') {
- return value;
- }
- }
-
- // Maybe the value hasn't made it to the redux store yet, check the app props.
- const flags = getAppProp(stateful, 'flags') || {};
-
- return flags[flag] || defaultValue;
- }
|