git-101 / src /js /stores /CommandLineStore.js
mervenoyan's picture
initial commit
45a32e2
"use strict";
var AppConstants = require('../constants/AppConstants');
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var ActionTypes = AppConstants.ActionTypes;
var COMMAND_HISTORY_KEY = 'lgb_CommandHistory';
var COMMAND_HISTORY_MAX_LENGTH = 100;
var COMMAND_HISTORY_TO_KEEP = 10;
var _commandHistory = [];
try {
_commandHistory = JSON.parse(
localStorage.getItem(COMMAND_HISTORY_KEY) || '[]'
) || [];
} catch (e) {
}
function _checkForSize() {
// if our command line history is too big...
if (_commandHistory.length > COMMAND_HISTORY_MAX_LENGTH) {
// grab the last 10
_commandHistory =
_commandHistory.slice(0, COMMAND_HISTORY_TO_KEEP);
}
}
function _saveToLocalStorage() {
try {
localStorage.setItem(
COMMAND_HISTORY_KEY,
JSON.stringify(_commandHistory)
);
} catch (e) {
}
}
var CommandLineStore = Object.assign(
{},
EventEmitter.prototype,
AppConstants.StoreSubscribePrototype,
{
getMaxHistoryLength: function() {
return COMMAND_HISTORY_MAX_LENGTH;
},
getCommandHistoryLength: function() {
return _commandHistory.length;
},
getCommandHistory: function() {
return _commandHistory.slice(0);
},
dispatchToken: AppDispatcher.register(function(payload) {
var action = payload.action;
var shouldInform = false;
switch (action.type) {
case ActionTypes.SUBMIT_COMMAND:
_commandHistory.unshift(String(action.text));
_checkForSize();
_saveToLocalStorage();
shouldInform = true;
break;
case ActionTypes.CHANGE_FLIP_TREE_Y:
break;
}
if (shouldInform) {
CommandLineStore.emit(AppConstants.CHANGE_EVENT);
}
})
});
module.exports = CommandLineStore;