dropin

alternative frontend for dropout.tv
git clone https://git.ce9e.org/dropin.git

commit
d30115849d852fa55e18df505645e1d84361ff21
parent
af6cd63d4acaccf25e63428e32a5695981cf7ae4
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-02-10 13:04
highlight active video quality

Diffstat

M static/style.css 4 ++++
M static/video.js 20 ++++++++++++++++----

2 files changed, 20 insertions, 4 deletions


diff --git a/static/style.css b/static/style.css

@@ -51,6 +51,10 @@ button {
   51    51     color: var(--fg2);
   52    52     cursor: pointer;
   53    53 }
   -1    54 button.active {
   -1    55     background-color: var(--border);
   -1    56     color: var(--fg);
   -1    57 }
   54    58 
   55    59 body {
   56    60     padding: 0;

diff --git a/static/video.js b/static/video.js

@@ -16,6 +16,9 @@ var applyQuality = function(quality, lazy) {
   16    16     if (quality !== 'auto' && (!quality || !source)) {
   17    17         return;
   18    18     }
   -1    19     Array.from(menu.querySelectorAll('button')).forEach(btn => {
   -1    20         btn.classList.toggle('active', btn.dataset.quality == quality);
   -1    21     });
   19    22     var time = video.currentTime;
   20    23     var paused = video.paused;
   21    24     if (quality === 'auto') {
@@ -35,14 +38,22 @@ var applyQuality = function(quality, lazy) {
   35    38 var createMenu = function() {
   36    39     var sources = Array.from(video.querySelectorAll('[data-quality]')).reverse();
   37    40     var ul = h('ul', {'class': 'quality'}, sources.map(source => h('li', {}, [
   38    -1         h('button', {'type': 'button', 'title': source.dataset.co2}, [source.dataset.quality]),
   -1    41         h('button', {
   -1    42             'type': 'button',
   -1    43             'title': source.dataset.co2,
   -1    44             'data-quality': source.dataset.quality,
   -1    45         }, [source.dataset.quality]),
   39    46     ])));
   40    47     ul.append(h('li', {}, [
   41    -1         h('button', {'type': 'button'}, ['auto']),
   -1    48         h('button', {
   -1    49             'type': 'button',
   -1    50             'class': 'active',
   -1    51             'data-quality': 'auto',
   -1    52         }, ['auto']),
   42    53     ]));
   43    54     ul.addEventListener('click', event => {
   44    55         if (event.target.type === 'button') {
   45    -1             var quality = event.target.textContent;
   -1    56             var quality = event.target.dataset.quality;
   46    57             localStorage.setItem('quality', quality);
   47    58             applyQuality(quality);
   48    59         }
@@ -50,5 +61,6 @@ var createMenu = function() {
   50    61     return ul;
   51    62 };
   52    63 
   -1    64 var menu = createMenu();
   -1    65 video.after(menu);
   53    66 applyQuality(localStorage.getItem('quality'), true);
   54    -1 video.after(createMenu());