commit: d8a0ee1956e291e88a33425eb504d36c85fc3a3f
parent: 91c71471ab41bb9af673daf6dde50159d0bfde18
Author: unarist <m.unarist@gmail.com>
Date: Thu, 15 Jun 2017 04:59:52 +0900
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.
Diffstat:
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git 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: