summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer/player
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/app/views/viewer/player')
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js1
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js10
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js13
-rw-r--r--animism-align/frontend/app/views/viewer/player/player.container.js2
4 files changed, 19 insertions, 7 deletions
diff --git a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
index adbc443..cd40746 100644
--- a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
+++ b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
@@ -166,6 +166,7 @@ class FullscreenVideo extends Component {
mediaItem={item}
cc={cc}
onScrub={this.handleScrub}
+ scrubMasterAudio={true}
/>
<VideoSubtitles
cc={cc}
diff --git a/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js b/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
index ea73d03..00f2de4 100644
--- a/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
+++ b/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
@@ -1,6 +1,7 @@
import React, { Component } from 'react'
import VimeoPlayer from 'app/utils/vendor/vimeo'
+import actions from 'app/actions'
import { CURTAIN_COLOR_LOOKUP } from 'app/constants'
import { SpeakerIcon } from '../../nav/viewer.icons'
import { MediaCitation } from '../components.media'
@@ -61,7 +62,14 @@ export class MediaVideo extends Component {
<div
className='videoPoster'
style={style}
- onClick={e => onAnnotationClick(e, paragraph, annotation)}
+ onClick={e => {
+ if (annotation.settings.can_play_full_video) {
+ e && e.stopPropagation()
+ actions.viewer.openVideoModal(item, color)
+ } else {
+ onAnnotationClick(e, paragraph, annotation)
+ }
+ }}
>
<div className='posterImage'>
<img src={posterURL(item)} />
diff --git a/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js b/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
index e43c7ec..10677dc 100644
--- a/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
+++ b/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
@@ -47,15 +47,17 @@ class VideoScrubber extends Component {
this.defer = false
}
scrub(x, scrubbing) {
- const { timing, start_ts, video_start_ts, onScrub, duration } = this.props
+ const { timing, start_ts, video_start_ts, onScrub, onToggle, duration, scrubMasterAudio } = this.props
const bounds = this.scrubberRef.current.getBoundingClientRect()
// get percent offset from the scrubber
const percent = clamp((x - bounds.left) / bounds.width, 0, 1)
// this offset in seconds based on the length of the fullscreen element
const seconds = percent * duration
// we can use this to seek the audio
- actions.audio.seek(start_ts + seconds)
- actions.audio.play()
+ if (scrubMasterAudio) {
+ actions.audio.seek(start_ts + seconds)
+ actions.audio.play()
+ }
// apply the video start offset.
// in case the video loops, modulo the length of the original video
const video_seek = ((seconds + video_start_ts) % timing.duration)
@@ -104,7 +106,7 @@ class VideoScrubber extends Component {
clearTimeout(this.hideTimeout)
}
render() {
- const { playing, start_ts, play_ts, volume, timing, video_start_ts, duration, cc, mediaItem } = this.props
+ const { playing, start_ts, play_ts, volume, timing, video_start_ts, duration, cc, mediaItem, onToggle } = this.props
const { hovering, showing } = this.state
// remove video start offset from timing
// console.log(start_ts, play_ts)
@@ -119,7 +121,7 @@ class VideoScrubber extends Component {
return (
<div className={className}>
<div className='start-controls'>
- <PlayButton playing={playing} />
+ <PlayButton playing={playing} onClick={onToggle} />
</div>
<div
className='scrub-bar-container'
@@ -153,7 +155,6 @@ class VideoScrubber extends Component {
}
const mapStateToProps = state => ({
- playing: state.audio.playing,
volume: state.audio.volume,
cc: state.audio.cc,
})
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 77de555..39a08dc 100644
--- a/animism-align/frontend/app/views/viewer/player/player.container.js
+++ b/animism-align/frontend/app/views/viewer/player/player.container.js
@@ -7,6 +7,7 @@ import { preloadSectionImages } from 'app/utils/image.utils'
import PlayerTranscript from './player.transcript'
import PlayerFullscreen from './player.fullscreen'
+import VideoModal from '../modals/modals.video'
class PlayerContainer extends Component {
constructor(props) {
@@ -110,6 +111,7 @@ class PlayerContainer extends Component {
<div className='viewer-container'>
<PlayerTranscript />
<PlayerFullscreen />
+ <VideoModal />
</div>
)
}