From d8a0ee1956e291e88a33425eb504d36c85fc3a3f Mon Sep 17 00:00:00 2001 From: unarist Date: Thu, 15 Jun 2017 04:59:52 +0900 Subject: [PATCH] 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. --- app/javascript/mastodon/reducers/settings.js | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index 3dc885faba..35698ef82e 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -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: