Fix merge default columns (#3748)

mergeDeep also merges columns, but it should be replaced simply.

So in the new function, first apply mergeDeep except columns, and set default columns if columns unset.
signup-info-prompt
unarist 2017-06-15 04:59:52 +09:00 committed by Eugen Rochko
parent 91c71471ab
commit d8a0ee1956
1 changed files with 14 additions and 7 deletions

View File

@ -7,12 +7,6 @@ import uuid from '../uuid';
const initialState = Immutable.Map({
onboarded: false,
columns: Immutable.fromJS([
{ id: 'COMPOSE', uuid: uuid(), params: {} },
{ id: 'HOME', uuid: uuid(), params: {} },
{ id: 'NOTIFICATIONS', uuid: uuid(), params: {} },
]),
home: Immutable.Map({
shows: Immutable.Map({
reblog: true,
@ -60,6 +54,19 @@ const initialState = Immutable.Map({
}),
});
const defaultColumns = Immutable.fromJS([
{ id: 'COMPOSE', uuid: uuid(), params: {} },
{ id: 'HOME', uuid: uuid(), params: {} },
{ id: 'NOTIFICATIONS', uuid: uuid(), params: {} },
]);
const hydrate = (settings) => {
return initialState.withMutations((state) => {
state.mergeDeep(settings);
state.update('columns', defaultColumns, val => val);
});
};
const moveColumn = (state, uuid, direction) => {
const columns = state.get('columns');
const index = columns.findIndex(item => item.get('uuid') === uuid);
@ -76,7 +83,7 @@ const moveColumn = (state, uuid, direction) => {
export default function settings(state = initialState, action) {
switch(action.type) {
case STORE_HYDRATE:
return state.mergeDeep(action.state.get('settings'));
return hydrate(action.state.get('settings'));
case SETTING_CHANGE:
return state.setIn(action.key, action.value);
case COLUMN_ADD: