pcottle.learnGitBranching/src/js/stores/GlobalStateStore.js
2022-08-08 10:34:38 -06:00

74 lines
1.7 KiB
JavaScript

"use strict";
var AppConstants = require('../constants/AppConstants');
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var ActionTypes = AppConstants.ActionTypes;
var _isAnimating = false;
var _flipTreeY = false;
var _numLevelsSolved = 0;
var _disableLevelInstructions = false;
var _isSolvingLevel = false;
var GlobalStateStore = Object.assign(
{},
EventEmitter.prototype,
AppConstants.StoreSubscribePrototype,
{
getIsAnimating: function() {
return _isAnimating;
},
getIsSolvingLevel: function() {
return _isSolvingLevel;
},
getFlipTreeY: function() {
return _flipTreeY;
},
getNumLevelsSolved: function() {
return _numLevelsSolved;
},
getShouldDisableLevelInstructions: function() {
return _disableLevelInstructions;
},
dispatchToken: AppDispatcher.register(function(payload) {
var action = payload.action;
var shouldInform = false;
switch (action.type) {
case ActionTypes.SET_IS_SOLVING_LEVEL:
_isSolvingLevel = action.isSolvingLevel;
shouldInform = true;
break;
case ActionTypes.CHANGE_IS_ANIMATING:
_isAnimating = action.isAnimating;
shouldInform = true;
break;
case ActionTypes.CHANGE_FLIP_TREE_Y:
_flipTreeY = action.flipTreeY;
shouldInform = true;
break;
case ActionTypes.LEVEL_SOLVED:
_numLevelsSolved++;
shouldInform = true;
break;
case ActionTypes.DISABLE_LEVEL_INSTRUCTIONS:
_disableLevelInstructions = true;
shouldInform = true;
break;
}
if (shouldInform) {
GlobalStateStore.emit(AppConstants.CHANGE_EVENT);
}
})
});
module.exports = GlobalStateStore;