flopflip
Version:
A feature toggle wrapper to use LaunchDarkly with React Redux
35 lines (31 loc) • 900 B
JavaScript
import { connect } from 'react-redux';
import { compose, withProps } from 'recompose';
import intersection from 'lodash.intersection';
import { STATE_SLICE } from './../store';
const filterFeatureToggles = (
availableFeatureToggles,
requestedFeatureToggles
) =>
intersection(
Object.keys(availableFeatureToggles),
requestedFeatureToggles
).reduce(
(featureToggles, featureToggle) => ({
[featureToggle]: availableFeatureToggles[featureToggle],
}),
{}
);
export const injectFeatureToggles = requestedFeatureToggles =>
withProps(props => ({
featureToggles: filterFeatureToggles(
props.availableFeatureToggles,
requestedFeatureToggles
),
}));
export default requestedFeatureToggles =>
compose(
connect(state => ({
availableFeatureToggles: state[STATE_SLICE].flags,
})),
injectFeatureToggles(requestedFeatureToggles)
);