UNPKG

dodex-vertx

Version:

A java asynchronous server for Dodex and Dodex-mess

131 lines (111 loc) 2.99 kB
// Per Tutorial: Let’s Build a Redux Powered React Application - Robin Orheden import { createStore } from "redux"; let store = null; function createState () { let defaultState = { tools: { items: [] } }; return defaultState; } function findEntry (message, items) { let idx = -1; let current = -1; items.forEach((item, index) => { if (item.message === message) { idx = index; item.displayed = true; } else if (item.displayed === true) { current = index; item.displayed = false; } }); return { "idx": idx, "current": current }; } function toolsApp (state, action) { let newState = null; let found = -1; switch (action.type) { case "ADD_TOOLS": newState = Object.assign({}, state); found = findEntry(action.message, newState.tools.items); if (found.idx === -1) { newState.tools.items.push({ message: action.message, displayed: true, index: newState.tools.items.length, current: newState.tools.items.length }); } return newState; case "REPLACE_TOOLS": newState = Object.assign({}, state); found = findEntry(newState.tools.items[action.index].message, newState.tools.items); return newState; /* case 'DELETE_TOOLS': let items = [].concat(state.tools.items) items.splice(action.index, 1) return Object.assign({}, state, { tools: { items: items } }) */ case "CLEAR_TOOLS": return Object.assign({}, state, { tools: { items: [] } }); default: return state; } } function addTools (message) { return { type: "ADD_TOOLS", message: message, displayed: true }; } function replaceTools (index) { return { type: "REPLACE_TOOLS", index: index, displayed: true }; } // function deleteTools (index) { // return { // type: 'DELETE_TOOLS', // index: index // } // } // function clearTools () { // return { // type: 'CLEAR_TOOLS' // } // } function buildStateManagement () { store = createStore(toolsApp, createState()); } export default { toolsStateManagement () { buildStateManagement(); }, getStore () { return store; }, addCategory (message) { return store.dispatch(addTools(message)); }, replaceCategory (index) { return store.dispatch(replaceTools(index)); }, /* eslint no-unused-vars: ["error", { "args": "none" }] */ findEntry (message, items) { return findEntry(message, store.getState().tools.items); } };