initial command line store:

This commit is contained in:
Peter Cottle 2015-04-04 10:47:09 -07:00
parent ebfad44042
commit ca938ec79e
4 changed files with 108 additions and 0 deletions

View file

@ -0,0 +1,22 @@
var CommandLineActions = require('../actions/CommandLineActions');
var CommandLineStore = require('../stores/CommandLineStore');
describe('this store', function() {
it('starts with no entries', function() {
expect(CommandLineStore.getCommandHistoryLength())
.toEqual(0);
});
it('receives new commands', function() {
var command = 'git commit; git checkout HEAD';
CommandLineActions.submitCommand(command);
expect(CommandLineStore.getCommandHistoryLength())
.toEqual(1);
expect(CommandLineStore.getCommandHistory()[0])
.toEqual(command);
});
});

View file

@ -0,0 +1,19 @@
"use strict";
var AppConstants = require('../constants/AppConstants');
var AppDispatcher = require('../dispatcher/AppDispatcher');
var ActionTypes = AppConstants.ActionTypes;
var CommandLineActions = {
submitCommand: function(text) {
AppDispatcher.handleViewAction({
type: ActionTypes.SUBMIT_COMMAND,
text: text
});
}
};
module.exports = CommandLineActions;

View file

@ -0,0 +1,65 @@
"use strict";
var AppConstants = require('../constants/AppConstants');
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var ActionTypes = AppConstants.ActionTypes;
var COMMAND_HISTORY_KEY = 'lgb_CommandHistory';
var _commandHistory = [];
try {
_commandHistory = JSON.parse(
localStorage.getItem(COMMAND_HISTORY_KEY) || '[]'
) || [];
} catch (e) {
}
var _saveToLocalStorage = function() {
try {
localStorage.setItem(
COMMAND_HISTORY_KEY,
JSON.stringify(_commandHistory)
);
} catch (e) {
}
};
var CommandLineStore = assign(
{},
EventEmitter.prototype,
AppConstants.StoreSubscribePrototype,
{
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.push(action.text);
_saveToLocalStorage();
shouldInform = true;
break;
case ActionTypes.CHANGE_FLIP_TREE_Y:
break;
}
if (shouldInform) {
CommandLineStore.emit(AppConstants.CHANGE_EVENT);
}
})
});
module.exports = CommandLineStore;

View file

@ -6,6 +6,8 @@ var toGlobalize = {
Visuals: require('../visuals'),
Git: require('../git'),
CommandModel: require('../models/commandModel'),
CommandLineStore: require('../stores/CommandLineStore'),
CommandLineActions: require('../actions/CommandLineActions'),
LevelActions: require('../actions/LevelActions'),
LevelStore: require('../stores/LevelStore'),
LocaleActions: require('../actions/LocaleActions'),