Commit graph

202 commits

Author SHA1 Message Date
infiinte-persistence 9ce6ecc923 Lint fixes
I just wanted to make the lint fixes in a separate commit to make the diff's for the next commit clearer.
2021-03-15 15:03:15 -04:00
infinite-persistence 0d850742f5 Disable video previews in Comments and Post if author is below a certain level. 2021-03-12 10:38:16 -05:00
Sean Yesmunt 7702477e71 better posts styling 2021-03-11 14:12:59 -05:00
DispatchCommit 1f3035b2f9 remove console.log for linter 2021-03-09 16:04:40 -05:00
DispatchCommit d47b6eae0c Track duration for initial video fetch time
this may help identify degraded services and poor user experience.
2021-03-09 16:04:40 -05:00
DispatchCommit db2e1aafb1 rename getHls to getVhs
adds deprecation warning and allows for backwards compatibility
2021-03-09 15:31:29 -05:00
DispatchCommit d6aa72ed94 hls options is deprecated. Use vhs instead.
Fixes this video.js warning:
VIDEOJS: WARN: Using hls options is deprecated. Use vhs instead.
2021-03-09 15:31:29 -05:00
infinite-persistence af8b683308 videojs: Localize + add shortcut tooltip
## Issue
Partially closes 3041: Display/hint what keyboard shortcuts are available in videos
(minus the "all shortcuts" overlay -- saving that for another day)
2021-03-08 14:13:56 -05:00
infinite-persistence 05383701af Restore video loading circle
## Issue
5554: Video: loading circle sometimes does not appear until 2nd click

## What's happening
videojs behavior:
(a) A `src` change makes the Play button re-appear.
(b) An `onPlay` (or `play()`) makes the button go away.

Due to the `m3u8` header async fetch (i.e. return is potentially delayed), the initial `onPlay` (which cleared the button) that happened after user clicked Play gets negated by a potentially-delayed `src` change.

# Changes
- Manually hide the play button that is induced by the change in `src`. In the fetch-delay scenario mentioned above, the player continues to be in a 'playing' state anyway.
- But don't hide the button if paused externally (e.g. browser-level)
Restore video loading circle
2021-03-08 13:28:25 -05:00
DispatchCommit 1d12fc8102 hide quality selector by default 2021-03-08 12:08:12 -05:00
DispatchCommit 9be8a3036c Move videojs sass file
Looking at a few other files hoping to understand the convention for components, I moved the videojs.scss file to where all CSS related files appear to be in the project.
2021-03-05 16:51:45 -05:00
DispatchCommit 46f58c63c8 Pull styling out out into it's own file
Also restores the CSS for vjs-overlay which I commented out previously for *some* reason (but I don't know why, and it doesn't seem to make a difference whether I comment it out or not)
2021-03-05 16:51:45 -05:00
DispatchCommit d21a4fe8ab Remove intermediate accent-color sass var
Replaced with direct usage of `var(--color-primary);`
2021-03-05 16:51:45 -05:00
DispatchCommit 3fb0ac80ae Prevent user from highlight selecting UI 2021-03-05 16:51:45 -05:00
DispatchCommit 5a6743a4ce Bring in the initial styling 2021-03-05 16:51:45 -05:00
togekk1 232841ef5e Open ZoomableImage viewer when clicking on the image 2021-02-19 14:05:51 -05:00
togekk1 00017e241e Revert "Open the actual image when clicking on the image viewer"
This reverts commit 6a99947ac2d3fada59438d818599af6b68dcebd8.
2021-02-19 14:05:51 -05:00
togekk1 6144b08cf9 Open the actual image when clicking on the image viewer 2021-02-19 14:05:51 -05:00
Sean Yesmunt 0a8d43e932 lint 2021-02-18 14:11:10 -05:00
DispatchCommit d5d97fe6e7 cleanup plugin code 2021-02-18 14:11:10 -05:00
DispatchCommit 0fff2542b7 Add custom quality selector plugin
Adds custom video.js hls quality selector plugin
This allows the quality selector plugin to stay active and listen for source changes on the player to prevent the need to recreate the player when switching between MP4's and M3U8's
2021-02-18 14:11:10 -05:00
infiinte-persistence d26d76fc70 Theater: hide button when not needed
## Issues
5349: Remove theater mode button from player in comments
5519: Theatre mode button doesn't do anything in full screen mode [Odysse/LBRY desktop app]

## Notes
5349: Wanted to hide for 'markdown' as well, but it seems useful for 'markdown' (to clear the screen from Related), so I did not include it.
2021-02-17 17:56:10 -05:00
Sean Yesmunt 8c21ec30e8 prevent caching on streaming url requests
Fixes an issue where the browser still thought a file wasn't transcoded because it was serving the cached response
2021-01-27 14:27:27 -05:00
Sean Yesmunt 99d7487bc2 fix quality selector not showing up 2021-01-27 14:27:27 -05:00
DispatchCommit 9a395a0284 remove leftover console log 2021-01-27 12:50:40 -05:00
DispatchCommit d6e5df540e remove unused player reference 2021-01-27 12:50:40 -05:00
DispatchCommit 3d38739be1 adds vjs player reference to component state 2021-01-27 12:50:40 -05:00
infiinte-persistence 1f48dab312 Remove unnecessary 'reload' at the return statement.
We no longer need to re-render the whole thing..
2021-01-27 12:50:40 -05:00
infiinte-persistence 84bba58d64 Update broken 'Retry' button after videojs refactoring. 2021-01-27 12:50:40 -05:00
Dispatch 4cf9a455bc
add autoplay logic for embedded player (#5399)
Add autoplay logic when player is embedded.

Adds new `autoplay` prop to `VideoJs` component for specifying autoplay value.
2021-01-27 08:49:30 -05:00
DispatchCommit 52f883be4e fix linting errors 2021-01-26 11:00:41 -05:00
DispatchCommit ee28648852 remove console.log statements 2021-01-26 11:00:41 -05:00
DispatchCommit d8564cda5a hack-y solution to losing player context
use a global window variable to store the reference to the current video.js instance.
2021-01-26 11:00:41 -05:00
DispatchCommit 68ae2d571f only react to source prop updates 2021-01-26 11:00:41 -05:00
DispatchCommit 7c8383f2dc attempt to persist a single video.js instance
Continually recreating video.js instance on render is bad.
Instead, persist a single instance, and simply update the source and poster on the existing instance.
2021-01-26 11:00:41 -05:00
infiinte-persistence 855d13e735 Add "t" as shortcut for Theather Mode 2021-01-25 10:38:25 -05:00
DispatchCommit bb3354581a fix overrideNative option for vjs
resolves https://github.com/lbryio/lbry-desktop/issues/5323
2021-01-20 21:49:08 -05:00
Sean Yesmunt 21cbb64001 Revert "Add Chromecast support on Google Chrome."
This reverts commit 65ce47a7d1.
2021-01-20 15:14:00 -05:00
Sean Yesmunt c166060f0d Revert "Pass the title and channel name to Chromecast."
This reverts commit bb828385d0.
2021-01-20 15:14:00 -05:00
infiinte-persistence bb828385d0 Pass the title and channel name to Chromecast.
I'm a bit wary of adding props to this component due to the 'dispose' call, but I think 'source' and 'claim' will update together, so it shouldn't be an issue?
2021-01-19 10:29:28 -05:00
infiinte-persistence 65ce47a7d1 Add Chromecast support on Google Chrome. 2021-01-19 10:29:28 -05:00
infiinte-persistence 95b4f89e50 Make 'playback rate' persistent
## Issue
5308: Ability to choose default play speed and theatre mode or regular playback size

## Comments
Initially, I used the local storage, as per 'muted' and 'volume' -- I thought that would be appropriate.
Later, I saw that Theater Mode is already using Client Settings, so I re-did everything to match that.

Also, there is an accompanying commit in lbyr-redux.
2021-01-19 10:16:46 -05:00
Sean Yesmunt 80a7cbe16f add quality selector to transcoded videos 2021-01-15 10:34:41 -05:00
Sean Yesmunt d43c4d053e add video theater mode button 2021-01-08 08:27:41 -07:00
Sean Yesmunt eb398c419a turn it back on but head 2021-01-06 23:03:23 -05:00
Sean Yesmunt d92f6d3e18 comment out redirect handling for transcoded streams 2021-01-06 18:40:38 -05:00
Sean Yesmunt 2436c3eb70 add extra check for video source response 2021-01-04 15:19:54 -05:00
Sean Yesmunt f59cdb1929 fix for hls support 2021-01-04 15:04:36 -05:00
Sean Yesmunt a8cb4d7d57 update videojs import to include http-streaming module
so we can support hls streams
2020-12-28 13:44:38 -05:00
infiinte-persistence 49abbecbd7 mobile-ui: Fix missing chromecast button in Android-Chrome
## Issue:
5119 "Video: Mobile UI + overlay for keyboard shortcut feedback" was disabled because the feature broke the chromecast button in Android Chrome
2020-12-21 12:15:45 -05:00
infiinte-persistence 4a4247180f Revert "comment out mobileUI function until chromecast bug is fixed"
This reverts commit d8c4ff62cb.
2020-12-21 12:15:45 -05:00
infiinte-persistence 897128a168 Restore "Handle timestamp in Markdown."
This reverts the revertion in:
- 85f8965d44.
- d3f0e471e5.
2020-12-18 11:35:47 -05:00
Sean Yesmunt d8c4ff62cb comment out mobileUI function until chromecast bug is fixed 2020-12-15 17:03:32 -05:00
Sean Yesmunt 0d4659472b remove old ads code and disable videojs mobile plugin 2020-12-15 14:10:57 -05:00
Sean Yesmunt 85f8965d44 Revert "Handle timestamp in Markdown."
This reverts commit 3f1913e5f4.
2020-12-14 22:31:18 -05:00
infiinte-persistence 3f1913e5f4 Handle timestamp in Markdown.
The videojs player is exposed through the 'window' object.
2020-12-14 12:12:50 -05:00
infinite-persistence 04fbde49ec
Video: Mobile UI + overlay for keyboard shortcut feedback (#5119)
Co-authored-by: import <>
2020-12-14 11:40:59 -05:00
zeppi b736444306 player started event (embedded) 2020-11-30 14:52:05 -05:00
infiinte-persistence 28e7fec338 videojs: Add shortcuts for Playback-Rate
">" (shift + .) = Speed Up
"<" (shift + ,) = Speed Down
2020-11-23 13:12:22 -05:00
infiinte-persistence 18debf51cd FloatingPlayer: fix unusable volume slider in fp-mode
4913: Can't slide volume slider in pop out mode

I first tried to handle this at the floating player level, but it was impossible to hack there due to how 'react-draggable' works (it already moved the window before the "move" handler is called, so we can't do much).

Fix by overriding the dragging behavior of the videojs' VolumeBar class by not propagating the event further. It is odd that videojs didn't already do this, since it's SeekBar does stop the propagation.
2020-11-16 10:38:29 -05:00
Sean Yesmunt c21fef5b24 new ads provider 2020-11-05 12:21:32 -05:00
Sean Yesmunt fd5cde08c3 add back video player on adstest pagegaa 2020-11-04 12:00:31 -05:00
Sean Yesmunt cb50b8a9bc Revert "Improve IOS inline experience"
This reverts commit 9b38ba6c02.
2020-11-02 17:15:02 -05:00
Sean Yesmunt e6016538b4 add ads script to head for test 2020-11-02 12:01:58 -05:00
Sean Yesmunt 52eb4de7a9 add adstest page to test player ads 2020-10-30 00:20:42 -04:00
Thomas Zarebczan 9b38ba6c02 Improve IOS inline experience
Also puts back the video js player which has rate support - but it's hidden on smaller devices...maybe someone can fix later on.
2020-10-29 17:02:40 -04:00
Sean Yesmunt 295b8cf2e1 refactor floatingUri to allow inline players in comments/markdown 2020-10-21 15:29:29 -04:00
Sean Yesmunt 1f2fabe81b Use sentence case for all card titles 2020-09-29 17:12:32 -04:00
Sean Yesmunt bba539f846 Revert "Revert "add logging of player point of presence""
This reverts commit 4067e1ffd8.
2020-09-09 14:55:16 -04:00
Sean Yesmunt 4067e1ffd8 Revert "add logging of player point of presence"
This reverts commit fb142f7699.
2020-09-09 14:40:43 -04:00
Jeremy Kauffman fb142f7699 add logging of player point of presence 2020-09-09 10:48:15 -04:00
Sean Yesmunt 2f995be794 use new buffer analytics api 2020-08-07 22:54:29 -04:00
jessop d9bf72a351 all settings constants come from redux
sync settings

backout nav cases and anon preference key

more robust backout header

put notificationSettings under backout bar

review changes
2020-07-27 11:53:14 -04:00
infiinte-persistence 8e7604ec33 Video: Consolidate showTapButton() into a single call since the functionality is mutually exclusive. 2020-07-15 16:10:10 -04:00
infiinte-persistence 7bef092013 Add option to retry video stream on failure
## Issue
Closes 4475 Option to retry video stream on failure
2020-07-15 16:10:10 -04:00
infiinte-persistence 115c456318 Video: Stop loading circle when there's an error. 2020-07-15 16:10:10 -04:00
infiinte-persistence 5e51016602 VideoJSOptions: Remove duplicate poster declaration 2020-07-15 16:10:10 -04:00
infiinte-persistence 833bceeacc Fix unmuted state lost or reverted when playing a new video.
## Issue
Fixes 4460 `unmuted state lost / reverted`

1. Play a video.
2. Press mute.
3. Drag the volume bar to unmute.
4. Play a new video --> the video starts muted.

## Fix
The `volumechange` handler was comparing against stale variables, so there are times where the state was not saved. Just save both `muted` and `volume` without additional gating (the gating is probably unnecessary in the first place, since we are in a onChange function).
2020-07-07 09:28:04 -04:00
infiinte-persistence d01c20394e Fix "muted=false + volume=0" case.
We need to handle two types of "mute":
- Volume icon is pressed to mute.
- Volume slider moved to 0%.
2020-06-16 17:14:22 -04:00
infiinte-persistence 662778c47b Use 'process.env.NODE_ENV' instead of 'electron-is-dev' for spewing debug logs. 2020-06-16 17:14:22 -04:00
infiinte-persistence a20ea08ac7 Show "unmute" option on videos automatically muted by browser.
Implementation:
- The code is placed in <VideoJs> instead of <VideoViewer> as we need to control the video itself. It's more self-contained here, rather than trying to pass refs around between parent and child.
- useState cannot be used as it will cause a re-render when the hint it clicked and dismissed. The DOM is used to hide the button.
2020-06-16 17:14:22 -04:00
Sean Yesmunt 2066205b8f add user + rewards redux code from lbryinc 2020-06-16 09:56:32 -04:00
jessop e3c2919373 rename lbrytv to web
language and API consts

improve customization
custom homepages
get config from .env.default
custom title and logo

small changes

add pinned item to sidebar

rebase?
2020-05-25 17:21:02 -04:00
Sean Yesmunt 74dc6f4469 use nativeControls for ios devices 2020-05-25 10:36:17 -04:00
Sean Yesmunt 21f9fc7b31 Revert "Make sure native controls appear on touch devices Closes #4150"
This reverts commit 88f4329d34.
2020-05-22 10:30:56 -04:00
Jeffrey Fisher 88f4329d34 Make sure native controls appear on touch devices
Closes #4150
2020-05-21 13:28:34 -04:00
Sean Yesmunt c2abcf110c
Paid content on lbry.tv (#4197) 2020-05-21 11:38:28 -04:00
Jeffrey Fisher 394fad5754 Clear media position if video has played to the end.
Closes #4174
2020-05-15 09:51:18 -04:00
btzr-io c19d04f83e fix comic-book content-type detection
always show viewer: fix #4141

minor improvements for loading indicator
2020-05-13 10:18:36 -04:00
btzr-io 036cf734c6 prevent state updates after component unmounted 2020-05-13 10:18:36 -04:00
Baltazar Gomez c8f21025d1 initial web support 2020-05-13 10:18:36 -04:00
Baltazar Gomez 1992e78c2e update comicbook viewer
- convert to functional component
- use hooks to load stream
2020-05-13 10:18:36 -04:00
Sean Yesmunt ff429117cd make sure player callback has access to latest desktop start time 2020-05-05 16:47:27 -04:00
Sean Yesmunt 96d9e24a4b fix time to start analytics for desktop and fix rewards link 2020-05-05 14:04:52 -04:00
Sean Yesmunt db51789e07 pass time in ms to analytics for view apis 2020-05-05 10:09:53 -04:00
Jeffrey Fisher 7ea9c1c199 Only save media position on pause or dispose, not every timeupdate, for performance reasons. 2020-05-01 10:14:29 -04:00
Jeffrey Fisher c1f74aba2e Save media position in video viewer
Closes #2775
2020-05-01 10:14:29 -04:00
Sean Yesmunt 1a50e697ce embed functionality inside markdown posts 2020-04-30 10:13:01 -04:00
Sean Yesmunt c9f5813b81 try twice when the first play fails from a timeout 2020-04-29 11:00:42 -04:00
Sean Yesmunt b61907ad22 update timeout 2020-04-29 11:00:42 -04:00