Commit Graph

18 Commits

Author SHA1 Message Date
Émilien Devos ab84380b7d
Add the ability to hide quality options
Related to https://github.com/iv-org/invidious/pull/3011
2022-04-13 21:01:08 +00:00
Omar Roth aa06e72932
Show selector with single source 2020-07-16 21:26:17 -04:00
Omar Roth f200d0102e
fix: update playbackRate after switching qualities 2020-04-06 13:59:19 -05:00
Matt Luedke a3753ddb65 fix: Update menu when sources are set after player is ready (#47)
Fixes #47
2019-11-20 11:55:48 -05:00
gauda 8702f4fe4a Accept 'selected' as value for source.selected
This fixes #39.
2019-11-12 12:11:37 -05:00
Maxime Carrière 82fc7a155c fix: Regression bug with the initial source selection
The if (item.source.src !== src) had to be removed for the initial selection to be applied
2019-06-13 09:48:08 -04:00
Maxime Carrière 1f8d2b22b4 fix: Change quality selector update for items to solve VideoJS7 issue
Since VideoJS 7, once the player has started, any subsequent calls to the update() function on MenuOption will prevent the playback menu from fading out. The workaround I found was to remove the call to update() when a new quality is selected. The selection behavior was already handled by the MenuOption handleClick function so I just had to remove the previously selected option.
2019-06-05 15:17:28 -04:00
Ethan Smith 5cd2703d2b
Upgrade eslint config to use new @silvermine org 2018-12-21 15:03:51 -05:00
Matt Luedke 8feeafbf00 Refs #16 Fix video does not resume playing after quality change
When the HTML5 preload attribute is set to 'none' or when using Safari (even when the
preload attribute is not 'none'), the video does not resume playing after the quality is
changed using the quality selector menu. The quality selector plugin was listening for the
'loadeddata' event in order to know when to resume playback, but the 'loadeddata' event
does not fire when the preload attribute is set to 'none', and Safari does not fetch
enough data to emit a 'loadeddata' event.
2018-01-09 15:59:36 -05:00
Matt Luedke a682125480 Refs #13 Support quality selector buttons anywhere in the player's component hierarchy
Previously, the SourceInterceptor made the assumption that the QualitySelector button component
is a direct child of the controlBar component. That may not always be true. Video.js allows you
to specify a nested hierarchy of components, and so when plugin users choose to move the
QualitySelector button elsewhere, the plugin does not work properly.

This commit introduces a new event type called QUALITY_REQUESTED to signal when the user is
requesting a quality change. The old QUALITY_SELECTED event is now used to denote when the
plugin actually uses a new quality source. This dichotomy eliminates the need for the
SourceInterceptor to have a reference to the QualitySelector button component.
2017-12-01 19:54:19 -05:00
Ethan Smith 7da6fd37df Use `selected = false`, over `_.omit` to deselect a source
From a basic functionality standpoint, this accomplishes the same purpose as
the previous implementation using `_.omit`. However, rather than removing the
`selected` attribute from the sources, this will keep the structure the same by
only altering the value of the source.

If your usage of this plugin requires a stable source format, e.g. for
comparing sources to see if the source changed, please provide the `selected`
attribute when programmatically setting the player source. At this time, we
don't have a simple way to standardize the `selected` attribute on initial
source load. (i.e. It's up to the programmer to set the initial format on the
sources before giving them to the player)
2017-11-20 15:11:25 -05:00
Matt Luedke cc7f670cce Fixes #7 Add localized control text to quality selector menu button 2017-10-25 11:49:27 -04:00
Ethan Smith 9dd9ca108b Fixes #5 Only bind to QUALITY_SELECTED once
As things turn out, the middleware constructor is called every time `setSource`
is called [1]. This was causing a new listener to get bound to
`QUALITY_SELECTED` on each change by the quality selector. :( This change makes
it so the listener is only bound on the initial creation of the player.

[1] 03529163b6/src/js/tech/middleware.js (L66)
2017-10-18 14:27:45 -04:00
Ethan Smith 449a0a54d7 Ensure the correct resolution is selected on player 'ready' 2017-08-04 10:45:15 -04:00
Ethan Smith 26da31607d PR Modification: Use 'selected' instead of 'isDefault' 2017-08-04 09:48:58 -04:00
Ethan Smith b4a9aa73d0 Highlight correct resolution in the UI when the source is changed programmatically 2017-08-03 15:21:24 -04:00
Ethan Smith 156e5923c7 Initial implementation 2017-08-03 09:21:16 -04:00
Jeremy Thomerson f261cc04a2 Initial commit 2017-06-20 20:43:49 -04:00