diff --git a/__tests__/src/selectors/index.test.js b/__tests__/src/selectors/index.test.js index 41f0400122f8ca32667f2f7c4541ee74005c5fa1..cd61d8a72deb2ac4dc4e45dfa747d996e0bfa2d1 100644 --- a/__tests__/src/selectors/index.test.js +++ b/__tests__/src/selectors/index.test.js @@ -36,17 +36,17 @@ describe('getThumbnailNavigationPosition', () => { }; it('should return thumbnail navigation position if window exists', () => { - const received = getThumbnailNavigationPosition(state, 'a'); + const received = getThumbnailNavigationPosition(state, { windowId: 'a' }); expect(received).toBe('bottom'); }); it('should return undefined if position does not exist in window', () => { - const received = getThumbnailNavigationPosition(state, 'b'); + const received = getThumbnailNavigationPosition(state, { windowId: 'b' }); expect(received).toBeUndefined(); }); it('should return undefined if window does not exists', () => { - const received = getThumbnailNavigationPosition(state, 'c'); + const received = getThumbnailNavigationPosition(state, { windowId: 'c' }); expect(received).toBeUndefined(); }); }); diff --git a/src/containers/Window.js b/src/containers/Window.js index 318daa9b52ad7530f2deaf5c4de2e0d4b31efc34..2bdfa90e2efd6bec46fd4ec38207ad7db1f1a82e 100644 --- a/src/containers/Window.js +++ b/src/containers/Window.js @@ -18,7 +18,7 @@ const mapStateToProps = (state, props) => ({ window: state.windows[props.window.id], workspaceType: state.config.workspace.type, label: getManifestTitle(state, { windowId: props.window.id }), - thumbnailNavigationPosition: getThumbnailNavigationPosition(state, props.window.id), + thumbnailNavigationPosition: getThumbnailNavigationPosition(state, { windowId: props.window.id }), }); /** diff --git a/src/containers/WindowThumbnailSettings.js b/src/containers/WindowThumbnailSettings.js index 0fa87898f2c0b6877f70e50b777f4d3bbb6ee5e5..86ece45e61d629e6425997f314c2816905220ea2 100644 --- a/src/containers/WindowThumbnailSettings.js +++ b/src/containers/WindowThumbnailSettings.js @@ -19,9 +19,9 @@ const mapDispatchToProps = { setWindowThumbnailPosition: actions.setWindowThumbn * @memberof WindowViewer * @private */ -const mapStateToProps = (state, props) => ( +const mapStateToProps = (state, { windowId }) => ( { - thumbnailNavigationPosition: getThumbnailNavigationPosition(state, props.windowId), + thumbnailNavigationPosition: getThumbnailNavigationPosition(state, { windowId }), } ); diff --git a/src/state/selectors/index.js b/src/state/selectors/index.js index 98e2ddb4169d23db1883abc858c7bc0b6a83e513..44e3f7fc1743b7248d9df40cdb734ec8f1bef497 100644 --- a/src/state/selectors/index.js +++ b/src/state/selectors/index.js @@ -77,22 +77,25 @@ export function getIdAndContentOfResources(resources) { })); } +/** */ +function getWindow(state, { windowId }) { + return state.windows && state.windows[windowId]; +} + /** Return position of thumbnail navigation in a certain window. * @param {object} state * @param {String} windowId * @param {String} */ -export function getThumbnailNavigationPosition(state, windowId) { - return state.windows[windowId] - && state.windows[windowId].thumbnailNavigationId - && state.companionWindows[state.windows[windowId].thumbnailNavigationId] - && state.companionWindows[state.windows[windowId].thumbnailNavigationId].position; -} - -/** */ -function getWindow(state, { windowId }) { - return state.windows && state.windows[windowId]; -} +export const getThumbnailNavigationPosition = createSelector( + [ + getWindow, + state => state.companionWindows, + ], + (window, companionWindows) => window + && companionWindows[window.thumbnailNavigationId] + && companionWindows[window.thumbnailNavigationId].position, +); /** Return type of view in a certain window. * @param {object} state