|
|
"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 (_commandHistory.length > COMMAND_HISTORY_MAX_LENGTH) { |
|
|
|
|
|
_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; |
|
|
|