Conversation
Issue: #53 Adds a play button to every playlist row — on Playlists and on the Dashboard's Playlists panel — that opens the Ultimate Player scoped to that playlist. Until now the player was reachable from exactly one place: open a playlist, open a channel, then the slide-out's Launch button — and only when Settings → Video Config → Video player was set to Ultimate. There was no way to say "just start watching this playlist". The player itself needed no change. UplApp.boot() already falls back to the first channel when the hash carries no &ch=, so /player.html#pl=<id> was already a working URL that nothing was constructing. The launch lands on the first row of the rail's CURRENT order, so it follows the viewer's A-Z / # preference (#51). The button is shown regardless of the videoPlayer setting: that setting decides which player the channel SLIDE-OUT renders, which is a separate question from a per-row launcher. It is disabled while a playlist has no channels — a built-in is a zero-channel shell until its first sync, and launching one would open the player on a dead "No channel". No explanatory title there: .btn:disabled sets pointer-events:none globally so it would never show, and the row's own "0 channels" stat already says it. Order in the action cell is pin → play → waffle, keeping the waffle as the row's last control — which also keeps RowActionsMenu (position:absolute; right:0 against that cell) anchored under the waffle rather than shifting right. The launch now has three call sites, so ChannelDrawer.launchUpl's body moves to a shared openUltimatePlayer helper: the synchronous-window.open rule, the fixed 'masq-upl' window name, the features string, and the pop-up-blocked toast, along with the comments explaining why each is the way it is. The drawer keeps its own guard and delegates in one line. PlaylistRow.vue is untouched — it stays purely presentational, with each host supplying its own #actions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue: #53
Adds a play button to every playlist row — on Playlists and on the Dashboard's Playlists panel — that opens the Ultimate Player scoped to that playlist. Until now the player was reachable from exactly one place: open a playlist, open a channel, then the slide-out's Launch button — and only when Settings → Video Config → Video player was set to Ultimate. There was no way to say "just start watching this playlist".
The player itself needed no change. UplApp.boot() already falls back to the first channel when the hash carries no &ch=, so /player.html#pl= was already a working URL that nothing was constructing. The launch lands on the first row of the rail's CURRENT order, so it follows the viewer's A-Z / # preference (#51).
The button is shown regardless of the videoPlayer setting: that setting decides which player the channel SLIDE-OUT renders, which is a separate question from a per-row launcher. It is disabled while a playlist has no channels — a built-in is a zero-channel shell until its first sync, and launching one would open the player on a dead "No channel". No explanatory title there: .btn:disabled sets pointer-events:none globally so it would never show, and the row's own "0 channels" stat already says it.
Order in the action cell is pin → play → waffle, keeping the waffle as the row's last control — which also keeps RowActionsMenu (position:absolute; right:0 against that cell) anchored under the waffle rather than shifting right.
The launch now has three call sites, so ChannelDrawer.launchUpl's body moves to a shared openUltimatePlayer helper: the synchronous-window.open rule, the fixed 'masq-upl' window name, the features string, and the pop-up-blocked toast, along with the comments explaining why each is the way it is. The drawer keeps its own guard and delegates in one line. PlaylistRow.vue is untouched — it stays purely presentational, with each host supplying its own #actions.