import * as types from '../../types' // import { session, getDefault, getDefaultInt } from '../../session' import { crudState, crudReducer } from '../../api/crud.reducer' const initialState = crudState('page', { editor: { addingTile: false, editingTile: false, currentEditTileId: 0, tileList: false, }, options: { } }) const reducer = crudReducer('page') export default function pageReducer(state = initialState, action) { console.log(action.type, action) state = reducer(state, action) switch (action.type) { case types.tile.create: console.log(action.data.res) return { ...state, show: { ...state.show, res: { ...state.show.res, tiles: state.show.res.tiles.concat(action.data.res), } } } case types.page.update_page_tile: return { ...state, show: { ...state.show, res: { ...state.show.res, tiles: state.show.res.tiles.map(tile => { if (tile.id === action.tile.id) { return { ...action.tile } } else { return tile } }), } } } // add tile UI case types.page.show_add_tile_form: return { ...state, editor: { ...state.editor, addingTile: true, editingTile: false, tileList: false, } } case types.page.hide_add_tile_form: return { ...state, editor: { ...state.editor, addingTile: false, } } case types.page.toggle_add_tile_form: return { ...state, editor: { ...state.editor, addingTile: !state.editor.addingTile, editingTile: false, tileList: false, } } // edit tile UI case types.page.show_edit_tile_form: return { ...state, editor: { ...state.editor, addingTile: false, editingTile: true, currentEditTileId: action.tile_id, tileList: false, } } case types.page.hide_edit_tile_form: return { ...state, editor: { ...state.editor, editingTile: false, } } // tile list UI case types.page.show_tile_list: return { ...state, editor: { ...state.editor, addingTile: false, editingTile: false, tileList: true, } } case types.page.hide_tile_list: return { ...state, editor: { ...state.editor, tileList: false, } } case types.page.toggle_tile_list: return { ...state, editor: { ...state.editor, addingTile: false, editingTile: false, tileList: !state.editor.tileList, } } case types.page.set_tile_sort_order: return { ...state, show: { ...state.show, res: { ...state.res, tiles: action.tiles, } } } default: return state } }