mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
const Reflux          = require('reflux');
 | 
						|
const FeatureActions  = require('./FeatureToggleActions');
 | 
						|
const filter          = require('lodash/collection/filter');
 | 
						|
const sortBy          = require('lodash/collection/sortBy');
 | 
						|
const findIndex       = require('lodash/array/findIndex');
 | 
						|
 | 
						|
let _featureToggles = [];
 | 
						|
 | 
						|
const FeatureStore = Reflux.createStore({
 | 
						|
 | 
						|
  // Initial setup
 | 
						|
    init () {
 | 
						|
        this.listenTo(FeatureActions.init.completed,    this.setToggles);
 | 
						|
        this.listenTo(FeatureActions.create.completed,  this.onCreate);
 | 
						|
        this.listenTo(FeatureActions.update.completed,  this.onUpdate);
 | 
						|
        this.listenTo(FeatureActions.archive.completed, this.onArchive);
 | 
						|
        this.listenTo(FeatureActions.revive.completed,  this.onRevive);
 | 
						|
    },
 | 
						|
 | 
						|
    onCreate (feature) {
 | 
						|
        this.setToggles([feature].concat(_featureToggles));
 | 
						|
    },
 | 
						|
 | 
						|
    setToggles (toggles) {
 | 
						|
        _featureToggles = sortBy(toggles, 'name');
 | 
						|
        this.trigger();
 | 
						|
    },
 | 
						|
 | 
						|
    onUpdate (feature) {
 | 
						|
        const idx = findIndex(_featureToggles, 'name', feature.name);
 | 
						|
        _featureToggles[idx] = feature;
 | 
						|
        this.trigger();
 | 
						|
    },
 | 
						|
 | 
						|
    onArchive (feature) {
 | 
						|
        const featureToggles = filter(_featureToggles, item => item.name !== feature.name);
 | 
						|
        this.setToggles(featureToggles);
 | 
						|
        this.trigger();
 | 
						|
    },
 | 
						|
 | 
						|
    onRevive (item) {
 | 
						|
        this.setToggles(_featureToggles.concat([item]));
 | 
						|
        this.trigger();
 | 
						|
    },
 | 
						|
 | 
						|
    getFeatureToggles () {
 | 
						|
        return _featureToggles;
 | 
						|
    },
 | 
						|
 | 
						|
    initStore (toggles) {
 | 
						|
        _featureToggles = toggles;
 | 
						|
    },
 | 
						|
});
 | 
						|
 | 
						|
module.exports = FeatureStore;
 |