about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/javascript/mastodon/reducers/settings.js21
1 files changed, 14 insertions, 7 deletions
diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js
index 3dc885fab..35698ef82 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: