From 00f4f6685881d72fd98020aac69d34e87345b3d8 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 28 Aug 2020 17:18:12 +0200 Subject: proper keyboard movement in vitrine --- .../frontend/app/views/viewer/modals/modals.vitrine.js | 6 +----- .../frontend/app/views/viewer/player/player.container.js | 15 ++++++++++++--- animism-align/frontend/app/views/viewer/viewer.actions.js | 12 ++++++++++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/animism-align/frontend/app/views/viewer/modals/modals.vitrine.js b/animism-align/frontend/app/views/viewer/modals/modals.vitrine.js index 5b78295..4ae72c7 100644 --- a/animism-align/frontend/app/views/viewer/modals/modals.vitrine.js +++ b/animism-align/frontend/app/views/viewer/modals/modals.vitrine.js @@ -59,11 +59,7 @@ const VitrineNavigation = ({ media, index, direction }) => { } return (
{ - if (shouldClose) { - actions.viewer.closeVitrineModal() - } else { - actions.viewer.setVitrineIndex(targetIndex) - } + actions.viewer.vitrineGo(direction) }}>
{isPrev && } diff --git a/animism-align/frontend/app/views/viewer/player/player.container.js b/animism-align/frontend/app/views/viewer/player/player.container.js index f783b9b..9e43c32 100644 --- a/animism-align/frontend/app/views/viewer/player/player.container.js +++ b/animism-align/frontend/app/views/viewer/player/player.container.js @@ -26,7 +26,7 @@ class PlayerContainer extends Component { if (document.activeElement !== document.body) { return } - const { currentSection, audio } = this.props + const { currentSection, audio, viewer } = this.props const { play_ts } = audio let start_ts = 0 let end_ts = 0 @@ -43,12 +43,20 @@ class PlayerContainer extends Component { case 37: // left case 38: // up e.preventDefault() - actions.audio.seek(clamp(play_ts - 5.0, start_ts, end_ts)) + if (viewer.vitrineModal.open) { + actions.viewer.vitrineGo(-1) + } else { + actions.audio.seek(clamp(play_ts - 5.0, start_ts, end_ts)) + } break case 39: // right case 40: // down e.preventDefault() - actions.audio.seek(clamp(play_ts + 5.0, start_ts, end_ts)) + if (viewer.vitrineModal.open) { + actions.viewer.vitrineGo(+1) + } else { + actions.audio.seek(clamp(play_ts + 5.0, start_ts, end_ts)) + } break } } @@ -99,6 +107,7 @@ class PlayerContainer extends Component { } const mapStateToProps = state => ({ + viewer: state.viewer, audio: state.audio, sections: state.viewer.sections, currentSection: state.viewer.currentSection, diff --git a/animism-align/frontend/app/views/viewer/viewer.actions.js b/animism-align/frontend/app/views/viewer/viewer.actions.js index e8aaf0d..5673fd8 100644 --- a/animism-align/frontend/app/views/viewer/viewer.actions.js +++ b/animism-align/frontend/app/views/viewer/viewer.actions.js @@ -218,6 +218,18 @@ export const closeVitrineModal = (media, id) => dispatch => { export const setVitrineIndex = (index) => dispatch => { dispatch({ type: types.viewer.set_vitrine_index, index }) } +export const vitrineGo = direction => dispatch => { + const { vitrineModal } = store.getState().viewer + const { media, index } = vitrineModal + const targetIndex = index + direction + const shouldClose = (targetIndex < 0) || (targetIndex === media.settings.image_order.length) + if (shouldClose) { + actions.viewer.closeVitrineModal() + } else { + actions.viewer.setVitrineIndex(targetIndex) + } + +} export const openGrowl = message => dispatch => { dispatch({ type: types.viewer.open_growl, message }) -- cgit v1.2.3-70-g09d2