Skip to content
Snippets Groups Projects
Commit 092f7cdc authored by Chris Beer's avatar Chris Beer
Browse files

Initialize config with the default settings

parent 79ce771a
No related branches found
No related tags found
No related merge requests found
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import { Provider } from 'react-redux'; import { Provider } from 'react-redux';
import deepmerge from 'deepmerge';
import uuid from 'uuid/v4'; import uuid from 'uuid/v4';
import PluginProvider from '../extend/PluginProvider'; import PluginProvider from '../extend/PluginProvider';
import App from '../containers/App'; import App from '../containers/App';
import createStore from '../state/createStore'; import createStore from '../state/createStore';
import createRootReducer from '../state/reducers/rootReducer'; import createRootReducer from '../state/reducers/rootReducer';
import * as actions from '../state/actions'; import * as actions from '../state/actions';
import settings from '../config/settings';
import { getCompanionWindowIdsForPosition, getManifestSearchService } from '../state/selectors'; import { getCompanionWindowIdsForPosition, getManifestSearchService } from '../state/selectors';
/** /**
...@@ -43,12 +41,11 @@ class MiradorViewer { ...@@ -43,12 +41,11 @@ class MiradorViewer {
*/ */
processConfig() { processConfig() {
/** merge type for arrays */ /** merge type for arrays */
const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray; const action = actions.importConfig(this.config);
const mergedConfig = deepmerge(settings, this.config, { arrayMerge: overwriteMerge });
const action = actions.setConfig(mergedConfig);
this.store.dispatch(action); this.store.dispatch(action);
const { config: storedConfig } = this.store.getState();
mergedConfig.windows.forEach((miradorWindow, layoutOrder) => { storedConfig.windows.forEach((miradorWindow, layoutOrder) => {
const windowId = `window-${uuid()}`; const windowId = `window-${uuid()}`;
const manifestId = miradorWindow.manifestId || miradorWindow.loadedManifest; const manifestId = miradorWindow.manifestId || miradorWindow.loadedManifest;
const manifestAction = this.store.dispatch(actions.fetchManifest(manifestId)); const manifestAction = this.store.dispatch(actions.fetchManifest(manifestId));
...@@ -57,7 +54,7 @@ class MiradorViewer { ...@@ -57,7 +54,7 @@ class MiradorViewer {
id: windowId, id: windowId,
layoutOrder, layoutOrder,
manifestId, manifestId,
thumbnailNavigationPosition: mergedConfig.thumbnailNavigation.defaultPosition, thumbnailNavigationPosition: storedConfig.thumbnailNavigation.defaultPosition,
// ... overridden by values from the window configuration ... // ... overridden by values from the window configuration ...
...miradorWindow, ...miradorWindow,
})); }));
...@@ -81,9 +78,9 @@ class MiradorViewer { ...@@ -81,9 +78,9 @@ class MiradorViewer {
}); });
}); });
Object.keys(mergedConfig.manifests || {}).forEach((manifestId) => { Object.keys(storedConfig.manifests || {}).forEach((manifestId) => {
this.store.dispatch( this.store.dispatch(
actions.requestManifest(manifestId, mergedConfig.manifests[manifestId]), actions.requestManifest(manifestId, storedConfig.manifests[manifestId]),
); );
}); });
} }
......
import deepmerge from 'deepmerge'; import deepmerge from 'deepmerge';
import settings from '../../config/settings';
import ActionTypes from '../actions/action-types'; import ActionTypes from '../actions/action-types';
const initialState = { ...settings };
/** Overwrite arrays when deep merging */
const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray;
/** /**
* configReducer - does a deep merge of the config * configReducer - does a deep merge of the config
*/ */
export const configReducer = (state = {}, action) => { export const configReducer = (state = initialState, action) => {
switch (action.type) { switch (action.type) {
case ActionTypes.UPDATE_CONFIG: case ActionTypes.UPDATE_CONFIG:
case ActionTypes.IMPORT_CONFIG: case ActionTypes.IMPORT_CONFIG:
return deepmerge(state, action.config); return deepmerge(state, action.config, { arrayMerge: overwriteMerge });
case ActionTypes.SET_CONFIG: case ActionTypes.SET_CONFIG:
return action.config; return action.config;
case ActionTypes.IMPORT_MIRADOR_STATE: case ActionTypes.IMPORT_MIRADOR_STATE:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment