separate console

jh-changes
Shin'ya Ueoka 7 years ago
parent 22db12f2a3
commit 541449b1fc
  1. 8
      src/actions/index.js
  2. 2
      src/console/actions/console.js
  3. 9
      src/console/actions/index.js
  4. 2
      src/console/components/completion.js
  5. 4
      src/console/components/console.js
  6. 0
      src/console/index.html
  7. 10
      src/console/index.js
  8. 2
      src/console/reducers/index.js
  9. 0
      src/console/site.scss
  10. 3
      src/reducers/index.js
  11. 4
      test/console/actions/console.test.js
  12. 30
      test/console/reducers/console.test.js
  13. 4
      webpack.config.js

@ -1,12 +1,4 @@
export default { export default {
// console commands
CONSOLE_SHOW_COMMAND: 'console.show.command',
CONSOLE_SET_COMPLETIONS: 'console.set.completions',
CONSOLE_SHOW_ERROR: 'console.show.error',
CONSOLE_HIDE: 'console.hide',
CONSOLE_COMPLETION_NEXT: 'console.completion.next',
CONSOLE_COMPLETION_PREV: 'console.completion.prev',
// User input // User input
INPUT_KEY_PRESS: 'input.key,press', INPUT_KEY_PRESS: 'input.key,press',
INPUT_CLEAR_KEYS: 'input.clear.keys', INPUT_CLEAR_KEYS: 'input.clear.keys',

@ -1,4 +1,4 @@
import actions from 'actions'; import actions from 'console/actions';
const showCommand = (text) => { const showCommand = (text) => {
return { return {

@ -0,0 +1,9 @@
export default {
// console commands
CONSOLE_SHOW_COMMAND: 'console.show.command',
CONSOLE_SET_COMPLETIONS: 'console.set.completions',
CONSOLE_SHOW_ERROR: 'console.show.error',
CONSOLE_HIDE: 'console.hide',
CONSOLE_COMPLETION_NEXT: 'console.completion.next',
CONSOLE_COMPLETION_PREV: 'console.completion.prev',
};

@ -6,7 +6,7 @@ export default class Completion {
} }
update() { update() {
let state = this.store.getState().console; let state = this.store.getState();
if (JSON.stringify(this.prevState) === JSON.stringify(state)) { if (JSON.stringify(this.prevState) === JSON.stringify(state)) {
return; return;
} }

@ -1,5 +1,5 @@
import messages from 'shared/messages'; import messages from 'shared/messages';
import * as consoleActions from 'actions/console'; import * as consoleActions from 'console/actions/console';
export default class ConsoleComponent { export default class ConsoleComponent {
constructor(wrapper, store) { constructor(wrapper, store) {
@ -71,7 +71,7 @@ export default class ConsoleComponent {
} }
update() { update() {
let state = this.store.getState().console; let state = this.store.getState();
if (!this.prevState.commandShown && state.commandShown) { if (!this.prevState.commandShown && state.commandShown) {
this.showCommand(state.commandText); this.showCommand(state.commandText);
} else if (!state.commandShown) { } else if (!state.commandShown) {

@ -1,10 +1,10 @@
import './console.scss'; import './site.scss';
import messages from 'shared/messages'; import messages from 'shared/messages';
import CompletionComponent from 'components/completion'; import CompletionComponent from 'console/components/completion';
import ConsoleComponent from 'components/console'; import ConsoleComponent from 'console/components/console';
import reducers from 'reducers'; import reducers from 'console/reducers';
import { createStore } from 'store'; import { createStore } from 'store';
import * as consoleActions from 'actions/console'; import * as consoleActions from 'console/actions/console';
const store = createStore(reducers); const store = createStore(reducers);
let completionComponent = null; let completionComponent = null;

@ -1,4 +1,4 @@
import actions from 'actions'; import actions from 'console/actions';
const defaultState = { const defaultState = {
errorShown: false, errorShown: false,

@ -1,11 +1,9 @@
import inputReducer from 'reducers/input'; import inputReducer from 'reducers/input';
import consoleReducer from 'reducers/console';
import settingReducer from 'reducers/setting'; import settingReducer from 'reducers/setting';
import followReducer from 'reducers/follow'; import followReducer from 'reducers/follow';
const defaultState = { const defaultState = {
input: inputReducer(undefined, {}), input: inputReducer(undefined, {}),
console: consoleReducer(undefined, {}),
setting: settingReducer(undefined, {}), setting: settingReducer(undefined, {}),
follow: followReducer(undefined, {}), follow: followReducer(undefined, {}),
}; };
@ -13,7 +11,6 @@ const defaultState = {
export default function reducer(state = defaultState, action = {}) { export default function reducer(state = defaultState, action = {}) {
return Object.assign({}, state, { return Object.assign({}, state, {
input: inputReducer(state.input, action), input: inputReducer(state.input, action),
console: consoleReducer(state.console, action),
setting: settingReducer(state.setting, action), setting: settingReducer(state.setting, action),
follow: followReducer(state.follow, action), follow: followReducer(state.follow, action),
}); });

@ -1,6 +1,6 @@
import { expect } from "chai"; import { expect } from "chai";
import actions from 'actions'; import actions from 'console/actions';
import * as consoleActions from 'actions/console'; import * as consoleActions from 'console/actions/console';
describe("console actions", () => { describe("console actions", () => {
describe("showCommand", () => { describe("showCommand", () => {

@ -1,10 +1,10 @@
import { expect } from "chai"; import { expect } from "chai";
import actions from 'actions'; import actions from 'console/actions';
import consoleReducer from 'reducers/console'; import reducer from 'console/reducers';
describe("console reducer", () => { describe("console reducer", () => {
it('return the initial state', () => { it('return the initial state', () => {
let state = consoleReducer(undefined, {}); let state = reducer(undefined, {});
expect(state).to.have.property('errorShown', false); expect(state).to.have.property('errorShown', false);
expect(state).to.have.property('errorText', ''); expect(state).to.have.property('errorText', '');
expect(state).to.have.property('commandShown', false); expect(state).to.have.property('commandShown', false);
@ -16,7 +16,7 @@ describe("console reducer", () => {
it('return next state for CONSOLE_SHOW_COMMAND', () => { it('return next state for CONSOLE_SHOW_COMMAND', () => {
let action = { type: actions.CONSOLE_SHOW_COMMAND, text: 'open ' }; let action = { type: actions.CONSOLE_SHOW_COMMAND, text: 'open ' };
let state = consoleReducer({}, action); let state = reducer({}, action);
expect(state).to.have.property('commandShown', true); expect(state).to.have.property('commandShown', true);
expect(state).to.have.property('commandText', 'open '); expect(state).to.have.property('commandText', 'open ');
expect(state).to.have.property('errorShown', false); expect(state).to.have.property('errorShown', false);
@ -24,7 +24,7 @@ describe("console reducer", () => {
it('return next state for CONSOLE_SHOW_ERROR', () => { it('return next state for CONSOLE_SHOW_ERROR', () => {
let action = { type: actions.CONSOLE_SHOW_ERROR, text: 'an error' }; let action = { type: actions.CONSOLE_SHOW_ERROR, text: 'an error' };
let state = consoleReducer({}, action); let state = reducer({}, action);
expect(state).to.have.property('errorShown', true); expect(state).to.have.property('errorShown', true);
expect(state).to.have.property('errorText', 'an error'); expect(state).to.have.property('errorText', 'an error');
expect(state).to.have.property('commandShown', false); expect(state).to.have.property('commandShown', false);
@ -32,7 +32,7 @@ describe("console reducer", () => {
it('return next state for CONSOLE_HIDE', () => { it('return next state for CONSOLE_HIDE', () => {
let action = { type: actions.CONSOLE_HIDE }; let action = { type: actions.CONSOLE_HIDE };
let state = consoleReducer({}, action); let state = reducer({}, action);
expect(state).to.have.property('errorShown', false); expect(state).to.have.property('errorShown', false);
expect(state).to.have.property('commandShown', false); expect(state).to.have.property('commandShown', false);
}); });
@ -53,7 +53,7 @@ describe("console reducer", () => {
items: [4, 5, 6] items: [4, 5, 6]
}] }]
} }
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('completions', action.completions); expect(state).to.have.property('completions', action.completions);
expect(state).to.have.property('groupSelection', -1); expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1); expect(state).to.have.property('itemSelection', -1);
@ -73,16 +73,16 @@ describe("console reducer", () => {
}] }]
}; };
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', 0); expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 0); expect(state).to.have.property('itemSelection', 0);
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', 0); expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 1); expect(state).to.have.property('itemSelection', 1);
state = consoleReducer(state, action); state = reducer(state, action);
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', -1); expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1); expect(state).to.have.property('itemSelection', -1);
}); });
@ -101,16 +101,16 @@ describe("console reducer", () => {
}] }]
}; };
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', 1); expect(state).to.have.property('groupSelection', 1);
expect(state).to.have.property('itemSelection', 0); expect(state).to.have.property('itemSelection', 0);
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', 0); expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 1); expect(state).to.have.property('itemSelection', 1);
state = consoleReducer(state, action); state = reducer(state, action);
state = consoleReducer(state, action); state = reducer(state, action);
expect(state).to.have.property('groupSelection', -1); expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1); expect(state).to.have.property('itemSelection', -1);
}); });

@ -9,7 +9,7 @@ module.exports = {
index: path.join(src, 'content'), index: path.join(src, 'content'),
settings: path.join(src, 'pages/settings'), settings: path.join(src, 'pages/settings'),
background: path.join(src, 'background'), background: path.join(src, 'background'),
console: path.join(src, 'pages', 'console.js') console: path.join(src, 'console')
}, },
output: { output: {
@ -45,7 +45,7 @@ module.exports = {
plugins: [ plugins: [
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
template: path.join(src, 'pages', 'console.html'), template: path.join(src, 'console', 'index.html'),
filename: path.join(dist, 'console.html'), filename: path.join(dist, 'console.html'),
inject: false inject: false
}), }),