mirror of
https://github.com/iv-org/invidious.git
synced 2024-10-01 01:35:38 -04:00
commit
3bbd709bd6
@ -1,19 +1,20 @@
|
|||||||
var community_data = JSON.parse(document.getElementById('community_data').innerHTML);
|
'use strict';
|
||||||
|
var community_data = JSON.parse(document.getElementById('community_data').textContent);
|
||||||
|
|
||||||
String.prototype.supplant = function (o) {
|
String.prototype.supplant = function (o) {
|
||||||
return this.replace(/{([^{}]*)}/g, function (a, b) {
|
return this.replace(/{([^{}]*)}/g, function (a, b) {
|
||||||
var r = o[b];
|
var r = o[b];
|
||||||
return typeof r === 'string' || typeof r === 'number' ? r : a;
|
return typeof r === 'string' || typeof r === 'number' ? r : a;
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
function hide_youtube_replies(event) {
|
function hide_youtube_replies(event) {
|
||||||
var target = event.target;
|
var target = event.target;
|
||||||
|
|
||||||
sub_text = target.getAttribute('data-inner-text');
|
var sub_text = target.getAttribute('data-inner-text');
|
||||||
inner_text = target.getAttribute('data-sub-text');
|
var inner_text = target.getAttribute('data-sub-text');
|
||||||
|
|
||||||
body = target.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.children[1];
|
||||||
body.style.display = 'none';
|
body.style.display = 'none';
|
||||||
|
|
||||||
target.innerHTML = sub_text;
|
target.innerHTML = sub_text;
|
||||||
@ -25,10 +26,10 @@ function hide_youtube_replies(event) {
|
|||||||
function show_youtube_replies(event) {
|
function show_youtube_replies(event) {
|
||||||
var target = event.target;
|
var target = event.target;
|
||||||
|
|
||||||
sub_text = target.getAttribute('data-inner-text');
|
var sub_text = target.getAttribute('data-inner-text');
|
||||||
inner_text = target.getAttribute('data-sub-text');
|
var inner_text = target.getAttribute('data-sub-text');
|
||||||
|
|
||||||
body = target.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.children[1];
|
||||||
body.style.display = '';
|
body.style.display = '';
|
||||||
|
|
||||||
target.innerHTML = sub_text;
|
target.innerHTML = sub_text;
|
||||||
@ -63,8 +64,8 @@ function get_youtube_replies(target, load_more) {
|
|||||||
xhr.open('GET', url, true);
|
xhr.open('GET', url, true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
if (load_more) {
|
if (load_more) {
|
||||||
body = body.parentNode.parentNode;
|
body = body.parentNode.parentNode;
|
||||||
body.removeChild(body.lastElementChild);
|
body.removeChild(body.lastElementChild);
|
||||||
@ -92,12 +93,12 @@ function get_youtube_replies(target, load_more) {
|
|||||||
body.innerHTML = fallback;
|
body.innerHTML = fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Pulling comments failed.');
|
console.warn('Pulling comments failed.');
|
||||||
body.innerHTML = fallback;
|
body.innerHTML = fallback;
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
var video_data = JSON.parse(document.getElementById('video_data').innerHTML);
|
'use strict';
|
||||||
|
var video_data = JSON.parse(document.getElementById('video_data').textContent);
|
||||||
|
|
||||||
function get_playlist(plid, retries) {
|
function get_playlist(plid, retries) {
|
||||||
if (retries == undefined) retries = 5;
|
if (retries === undefined) retries = 5;
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to pull playlist');
|
console.warn('Failed to pull playlist');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var plid_url;
|
||||||
if (plid.startsWith('RD')) {
|
if (plid.startsWith('RD')) {
|
||||||
var plid_url = '/api/v1/mixes/' + plid +
|
plid_url = '/api/v1/mixes/' + plid +
|
||||||
'?continuation=' + video_data.id +
|
'?continuation=' + video_data.id +
|
||||||
'&format=html&hl=' + video_data.preferences.locale;
|
'&format=html&hl=' + video_data.preferences.locale;
|
||||||
} else {
|
} else {
|
||||||
var plid_url = '/api/v1/playlists/' + plid +
|
plid_url = '/api/v1/playlists/' + plid +
|
||||||
'?index=' + video_data.index +
|
'?index=' + video_data.index +
|
||||||
'&continuation' + video_data.id +
|
'&continuation' + video_data.id +
|
||||||
'&format=html&hl=' + video_data.preferences.locale;
|
'&format=html&hl=' + video_data.preferences.locale;
|
||||||
@ -57,17 +59,17 @@ function get_playlist(plid, retries) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
console.log('Pulling playlist failed... ' + retries + '/5');
|
console.warn('Pulling playlist failed... ' + retries + '/5');
|
||||||
setTimeout(function () { get_playlist(plid, retries - 1) }, 1000);
|
setTimeout(function () { get_playlist(plid, retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Pulling playlist failed... ' + retries + '/5');
|
console.warn('Pulling playlist failed... ' + retries + '/5');
|
||||||
get_playlist(plid, retries - 1);
|
get_playlist(plid, retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
@ -96,7 +98,7 @@ window.addEventListener('load', function (e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (video_data.video_series.length !== 0) {
|
if (video_data.video_series.length !== 0) {
|
||||||
url.searchParams.set('playlist', video_data.video_series.join(','))
|
url.searchParams.set('playlist', video_data.video_series.join(','));
|
||||||
}
|
}
|
||||||
|
|
||||||
location.assign(url.pathname + url.search);
|
location.assign(url.pathname + url.search);
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
n2a(document.querySelectorAll('[data-onrange="update_volume_value"]')).forEach(function (e) {
|
n2a(document.querySelectorAll('[data-onrange="update_volume_value"]')).forEach(function (e) {
|
||||||
var cb = function () { update_volume_value(e); }
|
var cb = function () { update_volume_value(e); };
|
||||||
e.oninput = cb;
|
e.oninput = cb;
|
||||||
e.onchange = cb;
|
e.onchange = cb;
|
||||||
});
|
});
|
||||||
@ -102,13 +102,13 @@
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
count.innerText = parseInt(count.innerText) + 1;
|
count.innerText = parseInt(count.innerText) + 1;
|
||||||
row.style.display = '';
|
row.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
var csrf_token = target.parentNode.querySelector('input[name="csrf_token"]').value;
|
var csrf_token = target.parentNode.querySelector('input[name="csrf_token"]').value;
|
||||||
xhr.send('csrf_token=' + csrf_token);
|
xhr.send('csrf_token=' + csrf_token);
|
||||||
@ -131,20 +131,20 @@
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
count.innerText = parseInt(count.innerText) + 1;
|
count.innerText = parseInt(count.innerText) + 1;
|
||||||
row.style.display = '';
|
row.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
var csrf_token = target.parentNode.querySelector('input[name="csrf_token"]').value;
|
var csrf_token = target.parentNode.querySelector('input[name="csrf_token"]').value;
|
||||||
xhr.send('csrf_token=' + csrf_token);
|
xhr.send('csrf_token=' + csrf_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle keypresses
|
// Handle keypresses
|
||||||
window.addEventListener('keydown', (event) => {
|
window.addEventListener('keydown', function (event) {
|
||||||
// Ignore modifier keys
|
// Ignore modifier keys
|
||||||
if (event.ctrlKey || event.metaKey) return;
|
if (event.ctrlKey || event.metaKey) return;
|
||||||
|
|
||||||
@ -152,14 +152,14 @@
|
|||||||
let focused_tag = document.activeElement.tagName.toLowerCase();
|
let focused_tag = document.activeElement.tagName.toLowerCase();
|
||||||
const allowed = /^(button|checkbox|file|radio|submit)$/;
|
const allowed = /^(button|checkbox|file|radio|submit)$/;
|
||||||
|
|
||||||
if (focused_tag === "textarea") return;
|
if (focused_tag === 'textarea') return;
|
||||||
if (focused_tag === "input") {
|
if (focused_tag === 'input') {
|
||||||
let focused_type = document.activeElement.type.toLowerCase();
|
let focused_type = document.activeElement.type.toLowerCase();
|
||||||
if (!focused_type.match(allowed)) return;
|
if (!focused_type.match(allowed)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Focus search bar on '/'
|
// Focus search bar on '/'
|
||||||
if (event.key == "/") {
|
if (event.key === '/') {
|
||||||
document.getElementById('searchbox').focus();
|
document.getElementById('searchbox').focus();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
var notification_data = JSON.parse(document.getElementById('notification_data').innerHTML);
|
'use strict';
|
||||||
|
var notification_data = JSON.parse(document.getElementById('notification_data').textContent);
|
||||||
|
|
||||||
var notifications, delivered;
|
var notifications, delivered;
|
||||||
|
|
||||||
function get_subscriptions(callback, retries) {
|
function get_subscriptions(callback, retries) {
|
||||||
if (retries == undefined) retries = 5;
|
if (retries === undefined) retries = 5;
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
return;
|
return;
|
||||||
@ -17,21 +18,21 @@ function get_subscriptions(callback, retries) {
|
|||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState === 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status === 200) {
|
if (xhr.status === 200) {
|
||||||
subscriptions = xhr.response;
|
var subscriptions = xhr.response;
|
||||||
callback(subscriptions);
|
callback(subscriptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
console.log('Pulling subscriptions failed... ' + retries + '/5');
|
console.warn('Pulling subscriptions failed... ' + retries + '/5');
|
||||||
setTimeout(function () { get_subscriptions(callback, retries - 1) }, 1000);
|
setTimeout(function () { get_subscriptions(callback, retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Pulling subscriptions failed... ' + retries + '/5');
|
console.warn('Pulling subscriptions failed... ' + retries + '/5');
|
||||||
get_subscriptions(callback, retries - 1);
|
get_subscriptions(callback, retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
@ -40,7 +41,7 @@ function create_notification_stream(subscriptions) {
|
|||||||
notifications = new SSE(
|
notifications = new SSE(
|
||||||
'/api/v1/auth/notifications?fields=videoId,title,author,authorId,publishedText,published,authorThumbnails,liveNow', {
|
'/api/v1/auth/notifications?fields=videoId,title,author,authorId,publishedText,published,authorThumbnails,liveNow', {
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
payload: 'topics=' + subscriptions.map(function (subscription) { return subscription.authorId }).join(','),
|
payload: 'topics=' + subscriptions.map(function (subscription) { return subscription.authorId; }).join(','),
|
||||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
|
||||||
});
|
});
|
||||||
delivered = [];
|
delivered = [];
|
||||||
@ -53,7 +54,7 @@ function create_notification_stream(subscriptions) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var notification = JSON.parse(event.data);
|
var notification = JSON.parse(event.data);
|
||||||
console.log('Got notification:', notification);
|
console.info('Got notification:', notification);
|
||||||
|
|
||||||
if (start_time < notification.published && !delivered.includes(notification.videoId)) {
|
if (start_time < notification.published && !delivered.includes(notification.videoId)) {
|
||||||
if (Notification.permission === 'granted') {
|
if (Notification.permission === 'granted') {
|
||||||
@ -67,7 +68,7 @@ function create_notification_stream(subscriptions) {
|
|||||||
|
|
||||||
system_notification.onclick = function (event) {
|
system_notification.onclick = function (event) {
|
||||||
window.open('/watch?v=' + event.currentTarget.tag, '_blank');
|
window.open('/watch?v=' + event.currentTarget.tag, '_blank');
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
delivered.push(notification.videoId);
|
delivered.push(notification.videoId);
|
||||||
@ -82,16 +83,16 @@ function create_notification_stream(subscriptions) {
|
|||||||
'<i class="icon ion-ios-notifications-outline"></i>';
|
'<i class="icon ion-ios-notifications-outline"></i>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
notifications.addEventListener('error', handle_notification_error);
|
notifications.addEventListener('error', handle_notification_error);
|
||||||
notifications.stream();
|
notifications.stream();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_notification_error(event) {
|
function handle_notification_error(event) {
|
||||||
console.log('Something went wrong with notifications, trying to reconnect...');
|
console.warn('Something went wrong with notifications, trying to reconnect...');
|
||||||
notifications = { close: function () { } };
|
notifications = { close: function () { } };
|
||||||
setTimeout(function () { get_subscriptions(create_notification_stream) }, 1000);
|
setTimeout(function () { get_subscriptions(create_notification_stream); }, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('load', function (e) {
|
window.addEventListener('load', function (e) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
var player_data = JSON.parse(document.getElementById('player_data').innerHTML);
|
'use strict';
|
||||||
var video_data = JSON.parse(document.getElementById('video_data').innerHTML);
|
var player_data = JSON.parse(document.getElementById('player_data').textContent);
|
||||||
|
var video_data = JSON.parse(document.getElementById('video_data').textContent);
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
preload: 'auto',
|
preload: 'auto',
|
||||||
@ -27,7 +28,7 @@ var options = {
|
|||||||
overrideNative: true
|
overrideNative: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
if (player_data.aspect_ratio) {
|
if (player_data.aspect_ratio) {
|
||||||
options.aspectRatio = player_data.aspect_ratio;
|
options.aspectRatio = player_data.aspect_ratio;
|
||||||
@ -38,7 +39,7 @@ embed_url.searchParams.delete('v');
|
|||||||
var short_url = location.origin + '/' + video_data.id + embed_url.search;
|
var short_url = location.origin + '/' + video_data.id + embed_url.search;
|
||||||
embed_url = location.origin + '/embed/' + video_data.id + embed_url.search;
|
embed_url = location.origin + '/embed/' + video_data.id + embed_url.search;
|
||||||
|
|
||||||
var save_player_pos_key = "save_player_pos";
|
var save_player_pos_key = 'save_player_pos';
|
||||||
|
|
||||||
videojs.Vhs.xhr.beforeRequest = function(options) {
|
videojs.Vhs.xhr.beforeRequest = function(options) {
|
||||||
if (options.uri.indexOf('videoplayback') === -1 && options.uri.indexOf('local=true') === -1) {
|
if (options.uri.indexOf('videoplayback') === -1 && options.uri.indexOf('local=true') === -1) {
|
||||||
@ -111,12 +112,12 @@ var shareOptions = {
|
|||||||
description: player_data.description,
|
description: player_data.description,
|
||||||
image: player_data.thumbnail,
|
image: player_data.thumbnail,
|
||||||
get embedCode() {
|
get embedCode() {
|
||||||
return "<iframe id='ivplayer' width='640' height='360' src='" +
|
return '<iframe id="ivplayer" width="640" height="360" src="' +
|
||||||
addCurrentTimeToURL(embed_url) + "' style='border:none;'></iframe>";
|
addCurrentTimeToURL(embed_url) + '" style="border:none;"></iframe>';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const storage = (() => {
|
const storage = (function () {
|
||||||
try { if (localStorage.length !== -1) return localStorage; }
|
try { if (localStorage.length !== -1) return localStorage; }
|
||||||
catch (e) { console.info('No storage available: ' + e); }
|
catch (e) { console.info('No storage available: ' + e); }
|
||||||
|
|
||||||
@ -137,57 +138,57 @@ if (location.pathname.startsWith('/embed/')) {
|
|||||||
// Detection code taken from https://stackoverflow.com/a/20293441
|
// Detection code taken from https://stackoverflow.com/a/20293441
|
||||||
|
|
||||||
function isMobile() {
|
function isMobile() {
|
||||||
try{ document.createEvent("TouchEvent"); return true; }
|
try{ document.createEvent('TouchEvent'); return true; }
|
||||||
catch(e){ return false; }
|
catch(e){ return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isMobile()) {
|
if (isMobile()) {
|
||||||
player.mobileUi();
|
player.mobileUi();
|
||||||
|
|
||||||
buttons = ["playToggle", "volumePanel", "captionsButton"];
|
var buttons = ['playToggle', 'volumePanel', 'captionsButton'];
|
||||||
|
|
||||||
if (video_data.params.quality !== 'dash') buttons.push("qualitySelector")
|
if (video_data.params.quality !== 'dash') buttons.push('qualitySelector');
|
||||||
|
|
||||||
// Create new control bar object for operation buttons
|
// Create new control bar object for operation buttons
|
||||||
const ControlBar = videojs.getComponent("controlBar");
|
const ControlBar = videojs.getComponent('controlBar');
|
||||||
let operations_bar = new ControlBar(player, {
|
let operations_bar = new ControlBar(player, {
|
||||||
children: [],
|
children: [],
|
||||||
playbackRates: [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
|
playbackRates: [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
|
||||||
});
|
});
|
||||||
buttons.slice(1).forEach(child => operations_bar.addChild(child))
|
buttons.slice(1).forEach(function (child) {operations_bar.addChild(child);});
|
||||||
|
|
||||||
// Remove operation buttons from primary control bar
|
// Remove operation buttons from primary control bar
|
||||||
primary_control_bar = player.getChild("controlBar");
|
var primary_control_bar = player.getChild('controlBar');
|
||||||
buttons.forEach(child => primary_control_bar.removeChild(child));
|
buttons.forEach(function (child) {primary_control_bar.removeChild(child);});
|
||||||
|
|
||||||
operations_bar_element = operations_bar.el();
|
var operations_bar_element = operations_bar.el();
|
||||||
operations_bar_element.className += " mobile-operations-bar"
|
operations_bar_element.className += ' mobile-operations-bar';
|
||||||
player.addChild(operations_bar)
|
player.addChild(operations_bar);
|
||||||
|
|
||||||
// Playback menu doesn't work when it's initialized outside of the primary control bar
|
// Playback menu doesn't work when it's initialized outside of the primary control bar
|
||||||
playback_element = document.getElementsByClassName("vjs-playback-rate")[0]
|
var playback_element = document.getElementsByClassName('vjs-playback-rate')[0];
|
||||||
operations_bar_element.append(playback_element)
|
operations_bar_element.append(playback_element);
|
||||||
|
|
||||||
// The share and http source selector element can't be fetched till the players ready.
|
// The share and http source selector element can't be fetched till the players ready.
|
||||||
player.one("playing", () => {
|
player.one('playing', function () {
|
||||||
share_element = document.getElementsByClassName("vjs-share-control")[0]
|
var share_element = document.getElementsByClassName('vjs-share-control')[0];
|
||||||
operations_bar_element.append(share_element)
|
operations_bar_element.append(share_element);
|
||||||
|
|
||||||
if (video_data.params.quality === 'dash') {
|
if (video_data.params.quality === 'dash') {
|
||||||
http_source_selector = document.getElementsByClassName("vjs-http-source-selector vjs-menu-button")[0]
|
var http_source_selector = document.getElementsByClassName('vjs-http-source-selector vjs-menu-button')[0];
|
||||||
operations_bar_element.append(http_source_selector)
|
operations_bar_element.append(http_source_selector);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable VR video support
|
// Enable VR video support
|
||||||
if (!video_data.params.listen && video_data.vr && video_data.params.vr_mode) {
|
if (!video_data.params.listen && video_data.vr && video_data.params.vr_mode) {
|
||||||
player.crossOrigin("anonymous")
|
player.crossOrigin('anonymous');
|
||||||
switch (video_data.projection_type) {
|
switch (video_data.projection_type) {
|
||||||
case "EQUIRECTANGULAR":
|
case 'EQUIRECTANGULAR':
|
||||||
player.vr({projection: "equirectangular"});
|
player.vr({projection: 'equirectangular'});
|
||||||
default: // Should only be "MESH" but we'll use this as a fallback.
|
default: // Should only be 'MESH' but we'll use this as a fallback.
|
||||||
player.vr({projection: "EAC"});
|
player.vr({projection: 'EAC'});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,27 +223,27 @@ player.playbackRate(video_data.params.speed);
|
|||||||
* @returns cookieValue
|
* @returns cookieValue
|
||||||
*/
|
*/
|
||||||
function getCookieValue(name) {
|
function getCookieValue(name) {
|
||||||
var value = document.cookie.split(";").filter(item => item.includes(name + "="));
|
var value = document.cookie.split(';').filter(function (item) {return item.includes(name + '=');});
|
||||||
|
|
||||||
return (value != null && value.length >= 1)
|
return (value.length >= 1)
|
||||||
? value[0].substring((name + "=").length, value[0].length)
|
? value[0].substring((name + '=').length, value[0].length)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method for updating the "PREFS" cookie (or creating it if missing)
|
* Method for updating the 'PREFS' cookie (or creating it if missing)
|
||||||
*
|
*
|
||||||
* @param {number} newVolume New volume defined (null if unchanged)
|
* @param {number} newVolume New volume defined (null if unchanged)
|
||||||
* @param {number} newSpeed New speed defined (null if unchanged)
|
* @param {number} newSpeed New speed defined (null if unchanged)
|
||||||
*/
|
*/
|
||||||
function updateCookie(newVolume, newSpeed) {
|
function updateCookie(newVolume, newSpeed) {
|
||||||
var volumeValue = newVolume != null ? newVolume : video_data.params.volume;
|
var volumeValue = newVolume !== null ? newVolume : video_data.params.volume;
|
||||||
var speedValue = newSpeed != null ? newSpeed : video_data.params.speed;
|
var speedValue = newSpeed !== null ? newSpeed : video_data.params.speed;
|
||||||
|
|
||||||
var cookieValue = getCookieValue('PREFS');
|
var cookieValue = getCookieValue('PREFS');
|
||||||
var cookieData;
|
var cookieData;
|
||||||
|
|
||||||
if (cookieValue != null) {
|
if (cookieValue !== null) {
|
||||||
var cookieJson = JSON.parse(decodeURIComponent(cookieValue));
|
var cookieJson = JSON.parse(decodeURIComponent(cookieValue));
|
||||||
cookieJson.volume = volumeValue;
|
cookieJson.volume = volumeValue;
|
||||||
cookieJson.speed = speedValue;
|
cookieJson.speed = speedValue;
|
||||||
@ -259,7 +260,7 @@ function updateCookie(newVolume, newSpeed) {
|
|||||||
var domainUsed = window.location.hostname;
|
var domainUsed = window.location.hostname;
|
||||||
|
|
||||||
// Fix for a bug in FF where the leading dot in the FQDN is not ignored
|
// Fix for a bug in FF where the leading dot in the FQDN is not ignored
|
||||||
if (domainUsed.charAt(0) != '.' && !ipRegex.test(domainUsed) && domainUsed != 'localhost')
|
if (domainUsed.charAt(0) !== '.' && !ipRegex.test(domainUsed) && domainUsed !== 'localhost')
|
||||||
domainUsed = '.' + window.location.hostname;
|
domainUsed = '.' + window.location.hostname;
|
||||||
|
|
||||||
document.cookie = 'PREFS=' + cookieData + '; SameSite=Strict; path=/; domain=' +
|
document.cookie = 'PREFS=' + cookieData + '; SameSite=Strict; path=/; domain=' +
|
||||||
@ -279,7 +280,7 @@ player.on('volumechange', function () {
|
|||||||
|
|
||||||
player.on('waiting', function () {
|
player.on('waiting', function () {
|
||||||
if (player.playbackRate() > 1 && player.liveTracker.isLive() && player.liveTracker.atLiveEdge()) {
|
if (player.playbackRate() > 1 && player.liveTracker.isLive() && player.liveTracker.atLiveEdge()) {
|
||||||
console.log('Player has caught up to source, resetting playbackRate.')
|
console.info('Player has caught up to source, resetting playbackRate.');
|
||||||
player.playbackRate(1);
|
player.playbackRate(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -290,13 +291,13 @@ if (video_data.premiere_timestamp && Math.round(new Date() / 1000) < video_data.
|
|||||||
|
|
||||||
if (video_data.params.save_player_pos) {
|
if (video_data.params.save_player_pos) {
|
||||||
const url = new URL(location);
|
const url = new URL(location);
|
||||||
const hasTimeParam = url.searchParams.has("t");
|
const hasTimeParam = url.searchParams.has('t');
|
||||||
const remeberedTime = get_video_time();
|
const remeberedTime = get_video_time();
|
||||||
let lastUpdated = 0;
|
let lastUpdated = 0;
|
||||||
|
|
||||||
if(!hasTimeParam) set_seconds_after_start(remeberedTime);
|
if(!hasTimeParam) set_seconds_after_start(remeberedTime);
|
||||||
|
|
||||||
const updateTime = () => {
|
const updateTime = function () {
|
||||||
const raw = player.currentTime();
|
const raw = player.currentTime();
|
||||||
const time = Math.floor(raw);
|
const time = Math.floor(raw);
|
||||||
|
|
||||||
@ -306,7 +307,7 @@ if (video_data.params.save_player_pos) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.on("timeupdate", updateTime);
|
player.on('timeupdate', updateTime);
|
||||||
}
|
}
|
||||||
else remove_all_video_times();
|
else remove_all_video_times();
|
||||||
|
|
||||||
@ -316,13 +317,13 @@ if (video_data.params.autoplay) {
|
|||||||
|
|
||||||
player.ready(function () {
|
player.ready(function () {
|
||||||
new Promise(function (resolve, reject) {
|
new Promise(function (resolve, reject) {
|
||||||
setTimeout(() => resolve(1), 1);
|
setTimeout(function () {resolve(1);}, 1);
|
||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
var promise = player.play();
|
var promise = player.play();
|
||||||
|
|
||||||
if (promise !== undefined) {
|
if (promise !== undefined) {
|
||||||
promise.then(_ => {
|
promise.then(function () {
|
||||||
}).catch(error => {
|
}).catch(function (error) {
|
||||||
bpb.show();
|
bpb.show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -333,16 +334,16 @@ if (video_data.params.autoplay) {
|
|||||||
if (!video_data.params.listen && video_data.params.quality === 'dash') {
|
if (!video_data.params.listen && video_data.params.quality === 'dash') {
|
||||||
player.httpSourceSelector();
|
player.httpSourceSelector();
|
||||||
|
|
||||||
if (video_data.params.quality_dash != "auto") {
|
if (video_data.params.quality_dash !== 'auto') {
|
||||||
player.ready(() => {
|
player.ready(function () {
|
||||||
player.on("loadedmetadata", () => {
|
player.on('loadedmetadata', function () {
|
||||||
const qualityLevels = Array.from(player.qualityLevels()).sort((a, b) => a.height - b.height);
|
const qualityLevels = Array.from(player.qualityLevels()).sort(function (a, b) {return a.height - b.height;});
|
||||||
let targetQualityLevel;
|
let targetQualityLevel;
|
||||||
switch (video_data.params.quality_dash) {
|
switch (video_data.params.quality_dash) {
|
||||||
case "best":
|
case 'best':
|
||||||
targetQualityLevel = qualityLevels.length - 1;
|
targetQualityLevel = qualityLevels.length - 1;
|
||||||
break;
|
break;
|
||||||
case "worst":
|
case 'worst':
|
||||||
targetQualityLevel = 0;
|
targetQualityLevel = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -356,7 +357,7 @@ if (!video_data.params.listen && video_data.params.quality === 'dash') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let i = 0; i < qualityLevels.length; i++) {
|
for (let i = 0; i < qualityLevels.length; i++) {
|
||||||
qualityLevels[i].enabled = (i == targetQualityLevel);
|
qualityLevels[i].enabled = (i === targetQualityLevel);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -390,10 +391,12 @@ if (!video_data.params.listen && video_data.params.annotations) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
window.addEventListener('__ar_annotation_click', e => {
|
window.addEventListener('__ar_annotation_click', function (e) {
|
||||||
const { url, target, seconds } = e.detail;
|
const url = e.detail.url,
|
||||||
|
target = e.detail.target,
|
||||||
|
seconds = e.detail.seconds;
|
||||||
var path = new URL(url);
|
var path = new URL(url);
|
||||||
|
|
||||||
if (path.href.startsWith('https://www.youtube.com/watch?') && seconds) {
|
if (path.href.startsWith('https://www.youtube.com/watch?') && seconds) {
|
||||||
@ -463,7 +466,7 @@ function get_video_time() {
|
|||||||
|
|
||||||
return timestamp || 0;
|
return timestamp || 0;
|
||||||
}
|
}
|
||||||
catch {
|
catch (e) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -474,7 +477,7 @@ function set_all_video_times(times) {
|
|||||||
try {
|
try {
|
||||||
storage.setItem(save_player_pos_key, JSON.stringify(times));
|
storage.setItem(save_player_pos_key, JSON.stringify(times));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.debug('set_all_video_times: ' + e);
|
console.warn('set_all_video_times: ' + e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
storage.removeItem(save_player_pos_key);
|
storage.removeItem(save_player_pos_key);
|
||||||
@ -489,7 +492,7 @@ function get_all_video_times() {
|
|||||||
try {
|
try {
|
||||||
return JSON.parse(raw);
|
return JSON.parse(raw);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.debug('get_all_video_times: ' + e);
|
console.warn('get_all_video_times: ' + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,7 +586,7 @@ function increase_playback_rate(steps) {
|
|||||||
player.playbackRate(options.playbackRates[newIndex]);
|
player.playbackRate(options.playbackRates[newIndex]);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('keydown', e => {
|
window.addEventListener('keydown', function (e) {
|
||||||
if (e.target.tagName.toLowerCase() === 'input') {
|
if (e.target.tagName.toLowerCase() === 'input') {
|
||||||
// Ignore input when focus is on certain elements, e.g. form fields.
|
// Ignore input when focus is on certain elements, e.g. form fields.
|
||||||
return;
|
return;
|
||||||
@ -702,7 +705,7 @@ window.addEventListener('keydown', e => {
|
|||||||
|
|
||||||
var volumeHover = false;
|
var volumeHover = false;
|
||||||
var volumeSelector = pEl.querySelector('.vjs-volume-menu-button') || pEl.querySelector('.vjs-volume-panel');
|
var volumeSelector = pEl.querySelector('.vjs-volume-menu-button') || pEl.querySelector('.vjs-volume-panel');
|
||||||
if (volumeSelector != null) {
|
if (volumeSelector !== null) {
|
||||||
volumeSelector.onmouseover = function () { volumeHover = true; };
|
volumeSelector.onmouseover = function () { volumeHover = true; };
|
||||||
volumeSelector.onmouseout = function () { volumeHover = false; };
|
volumeSelector.onmouseout = function () { volumeHover = false; };
|
||||||
}
|
}
|
||||||
@ -722,9 +725,9 @@ window.addEventListener('keydown', e => {
|
|||||||
var delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));
|
var delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
if (delta == 1) {
|
if (delta === 1) {
|
||||||
increase_volume(volumeStep);
|
increase_volume(volumeStep);
|
||||||
} else if (delta == -1) {
|
} else if (delta === -1) {
|
||||||
increase_volume(-volumeStep);
|
increase_volume(-volumeStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -733,7 +736,7 @@ window.addEventListener('keydown', e => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
player.on('mousewheel', mouseScroll);
|
player.on('mousewheel', mouseScroll);
|
||||||
player.on("DOMMouseScroll", mouseScroll);
|
player.on('DOMMouseScroll', mouseScroll);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
// Since videojs-share can sometimes be blocked, we defer it until last
|
// Since videojs-share can sometimes be blocked, we defer it until last
|
||||||
@ -743,13 +746,13 @@ if (player.share) {
|
|||||||
|
|
||||||
// show the preferred caption by default
|
// show the preferred caption by default
|
||||||
if (player_data.preferred_caption_found) {
|
if (player_data.preferred_caption_found) {
|
||||||
player.ready(() => {
|
player.ready(function () {
|
||||||
player.textTracks()[1].mode = 'showing';
|
player.textTracks()[1].mode = 'showing';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Safari audio double duration fix
|
// Safari audio double duration fix
|
||||||
if (navigator.vendor == "Apple Computer, Inc." && video_data.params.listen) {
|
if (navigator.vendor === 'Apple Computer, Inc.' && video_data.params.listen) {
|
||||||
player.on('loadedmetadata', function () {
|
player.on('loadedmetadata', function () {
|
||||||
player.on('timeupdate', function () {
|
player.on('timeupdate', function () {
|
||||||
if (player.remainingTime() < player.duration() / 2 && player.remainingTime() >= 2) {
|
if (player.remainingTime() < player.duration() / 2 && player.remainingTime() >= 2) {
|
||||||
@ -760,18 +763,18 @@ if (navigator.vendor == "Apple Computer, Inc." && video_data.params.listen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Watch on Invidious link
|
// Watch on Invidious link
|
||||||
if (window.location.pathname.startsWith("/embed/")) {
|
if (window.location.pathname.startsWith('/embed/')) {
|
||||||
const Button = videojs.getComponent('Button');
|
const Button = videojs.getComponent('Button');
|
||||||
let watch_on_invidious_button = new Button(player);
|
let watch_on_invidious_button = new Button(player);
|
||||||
|
|
||||||
// Create hyperlink for current instance
|
// Create hyperlink for current instance
|
||||||
redirect_element = document.createElement("a");
|
var redirect_element = document.createElement('a');
|
||||||
redirect_element.setAttribute("href", `//${window.location.host}/watch?v=${window.location.pathname.replace("/embed/","")}`)
|
redirect_element.setAttribute('href', location.pathname.replace('/embed/', '/watch?v='));
|
||||||
redirect_element.appendChild(document.createTextNode("Invidious"))
|
redirect_element.appendChild(document.createTextNode('Invidious'));
|
||||||
|
|
||||||
watch_on_invidious_button.el().appendChild(redirect_element)
|
watch_on_invidious_button.el().appendChild(redirect_element);
|
||||||
watch_on_invidious_button.addClass("watch-on-invidious")
|
watch_on_invidious_button.addClass('watch-on-invidious');
|
||||||
|
|
||||||
cb = player.getChild('ControlBar')
|
var cb = player.getChild('ControlBar');
|
||||||
cb.addChild(watch_on_invidious_button)
|
cb.addChild(watch_on_invidious_button);
|
||||||
};
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
var playlist_data = JSON.parse(document.getElementById('playlist_data').innerHTML);
|
'use strict';
|
||||||
|
var playlist_data = JSON.parse(document.getElementById('playlist_data').textContent);
|
||||||
|
|
||||||
function add_playlist_video(target) {
|
function add_playlist_video(target) {
|
||||||
var select = target.parentNode.children[0].children[1];
|
var select = target.parentNode.children[0].children[1];
|
||||||
@ -14,12 +15,12 @@ function add_playlist_video(target) {
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
option.innerText = '✓' + option.innerText;
|
option.innerText = '✓' + option.innerText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
||||||
}
|
}
|
||||||
@ -38,12 +39,12 @@ function add_playlist_item(target) {
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
tile.style.display = '';
|
tile.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
||||||
}
|
}
|
||||||
@ -62,12 +63,12 @@ function remove_playlist_item(target) {
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
tile.style.display = '';
|
tile.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
xhr.send('csrf_token=' + playlist_data.csrf_token);
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
var subscribe_data = JSON.parse(document.getElementById('subscribe_data').innerHTML);
|
'use strict';
|
||||||
|
var subscribe_data = JSON.parse(document.getElementById('subscribe_data').textContent);
|
||||||
|
|
||||||
var subscribe_button = document.getElementById('subscribe');
|
var subscribe_button = document.getElementById('subscribe');
|
||||||
subscribe_button.parentNode['action'] = 'javascript:void(0)';
|
subscribe_button.parentNode['action'] = 'javascript:void(0)';
|
||||||
@ -9,9 +10,11 @@ if (subscribe_button.getAttribute('data-type') === 'subscribe') {
|
|||||||
subscribe_button.onclick = unsubscribe;
|
subscribe_button.onclick = unsubscribe;
|
||||||
}
|
}
|
||||||
|
|
||||||
function subscribe(retries = 5) {
|
function subscribe(retries) {
|
||||||
|
if (retries === undefined) retries = 5;
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to subscribe.');
|
console.warn('Failed to subscribe.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,30 +31,33 @@ function subscribe(retries = 5) {
|
|||||||
subscribe_button.innerHTML = '<b>' + subscribe_data.unsubscribe_text + ' | ' + subscribe_data.sub_count_text + '</b>';
|
subscribe_button.innerHTML = '<b>' + subscribe_data.unsubscribe_text + ' | ' + subscribe_data.sub_count_text + '</b>';
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
subscribe_button.onclick = subscribe;
|
subscribe_button.onclick = subscribe;
|
||||||
subscribe_button.innerHTML = fallback;
|
subscribe_button.innerHTML = fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
console.log('Subscribing failed... ' + retries + '/5');
|
console.warn('Subscribing failed... ' + retries + '/5');
|
||||||
setTimeout(function () { subscribe(retries - 1) }, 1000);
|
setTimeout(function () { subscribe(retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Subscribing failed... ' + retries + '/5');
|
console.warn('Subscribing failed... ' + retries + '/5');
|
||||||
subscribe(retries - 1);
|
subscribe(retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + subscribe_data.csrf_token);
|
xhr.send('csrf_token=' + subscribe_data.csrf_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
function unsubscribe(retries = 5) {
|
function unsubscribe(retries) {
|
||||||
|
if (retries === undefined)
|
||||||
|
retries = 5;
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to subscribe');
|
console.warn('Failed to subscribe');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,23 +74,23 @@ function unsubscribe(retries = 5) {
|
|||||||
subscribe_button.innerHTML = '<b>' + subscribe_data.subscribe_text + ' | ' + subscribe_data.sub_count_text + '</b>';
|
subscribe_button.innerHTML = '<b>' + subscribe_data.subscribe_text + ' | ' + subscribe_data.sub_count_text + '</b>';
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
subscribe_button.onclick = unsubscribe;
|
subscribe_button.onclick = unsubscribe;
|
||||||
subscribe_button.innerHTML = fallback;
|
subscribe_button.innerHTML = fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
console.log('Unsubscribing failed... ' + retries + '/5');
|
console.warn('Unsubscribing failed... ' + retries + '/5');
|
||||||
setTimeout(function () { unsubscribe(retries - 1) }, 1000);
|
setTimeout(function () { unsubscribe(retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Unsubscribing failed... ' + retries + '/5');
|
console.warn('Unsubscribing failed... ' + retries + '/5');
|
||||||
unsubscribe(retries - 1);
|
unsubscribe(retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + subscribe_data.csrf_token);
|
xhr.send('csrf_token=' + subscribe_data.csrf_token);
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
|
'use strict';
|
||||||
var toggle_theme = document.getElementById('toggle_theme');
|
var toggle_theme = document.getElementById('toggle_theme');
|
||||||
toggle_theme.href = 'javascript:void(0);';
|
toggle_theme.href = 'javascript:void(0);';
|
||||||
|
|
||||||
toggle_theme.addEventListener('click', function () {
|
toggle_theme.addEventListener('click', function () {
|
||||||
var dark_mode = document.body.classList.contains("light-theme");
|
var dark_mode = document.body.classList.contains('light-theme');
|
||||||
|
|
||||||
var url = '/toggle_theme?redirect=false';
|
var url = '/toggle_theme?redirect=false';
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
@ -13,7 +14,7 @@ toggle_theme.addEventListener('click', function () {
|
|||||||
set_mode(dark_mode);
|
set_mode(dark_mode);
|
||||||
try {
|
try {
|
||||||
window.localStorage.setItem('dark_mode', dark_mode ? 'dark' : 'light');
|
window.localStorage.setItem('dark_mode', dark_mode ? 'dark' : 'light');
|
||||||
} catch {}
|
} catch (e) {}
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
});
|
});
|
||||||
@ -29,7 +30,7 @@ window.addEventListener('DOMContentLoaded', function () {
|
|||||||
try {
|
try {
|
||||||
// Update localStorage if dark mode preference changed on preferences page
|
// Update localStorage if dark mode preference changed on preferences page
|
||||||
window.localStorage.setItem('dark_mode', dark_mode);
|
window.localStorage.setItem('dark_mode', dark_mode);
|
||||||
} catch {}
|
} catch (e) {}
|
||||||
update_mode(dark_mode);
|
update_mode(dark_mode);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -46,11 +47,11 @@ function scheme_switch (e) {
|
|||||||
if (localStorage.getItem('dark_mode')) {
|
if (localStorage.getItem('dark_mode')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch {}
|
} catch (exception) {}
|
||||||
if (e.matches) {
|
if (e.matches) {
|
||||||
if (e.media.includes("dark")) {
|
if (e.media.includes('dark')) {
|
||||||
set_mode(true);
|
set_mode(true);
|
||||||
} else if (e.media.includes("light")) {
|
} else if (e.media.includes('light')) {
|
||||||
set_mode(false);
|
set_mode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,15 +78,13 @@ function update_mode (mode) {
|
|||||||
// If preference for dark mode indicated
|
// If preference for dark mode indicated
|
||||||
set_mode(true);
|
set_mode(true);
|
||||||
}
|
}
|
||||||
else if (mode === 'false' /* for backwards compatibility */ || mode === 'light') {
|
else if (mode === 'false' /* for backwards compatibility */ || mode === 'light') {
|
||||||
// If preference for light mode indicated
|
// If preference for light mode indicated
|
||||||
set_mode(false);
|
set_mode(false);
|
||||||
}
|
}
|
||||||
else if (document.getElementById('dark_mode_pref').textContent === '' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
else if (document.getElementById('dark_mode_pref').textContent === '' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
// If no preference indicated here and no preference indicated on the preferences page (backend), but the browser tells us that the operating system has a dark theme
|
// If no preference indicated here and no preference indicated on the preferences page (backend), but the browser tells us that the operating system has a dark theme
|
||||||
set_mode(true);
|
set_mode(true);
|
||||||
}
|
}
|
||||||
// else do nothing, falling back to the mode defined by the `dark_mode` preference on the preferences page (backend)
|
// else do nothing, falling back to the mode defined by the `dark_mode` preference on the preferences page (backend)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,31 +1,32 @@
|
|||||||
var video_data = JSON.parse(document.getElementById('video_data').innerHTML);
|
'use strict';
|
||||||
|
var video_data = JSON.parse(document.getElementById('video_data').textContent);
|
||||||
|
|
||||||
String.prototype.supplant = function (o) {
|
String.prototype.supplant = function (o) {
|
||||||
return this.replace(/{([^{}]*)}/g, function (a, b) {
|
return this.replace(/{([^{}]*)}/g, function (a, b) {
|
||||||
var r = o[b];
|
var r = o[b];
|
||||||
return typeof r === 'string' || typeof r === 'number' ? r : a;
|
return typeof r === 'string' || typeof r === 'number' ? r : a;
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
function toggle_parent(target) {
|
function toggle_parent(target) {
|
||||||
body = target.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.children[1];
|
||||||
if (body.style.display === null || body.style.display === '') {
|
if (body.style.display === null || body.style.display === '') {
|
||||||
target.innerHTML = '[ + ]';
|
target.textContent = '[ + ]';
|
||||||
body.style.display = 'none';
|
body.style.display = 'none';
|
||||||
} else {
|
} else {
|
||||||
target.innerHTML = '[ - ]';
|
target.textContent = '[ − ]';
|
||||||
body.style.display = '';
|
body.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggle_comments(event) {
|
function toggle_comments(event) {
|
||||||
var target = event.target;
|
var target = event.target;
|
||||||
body = target.parentNode.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.parentNode.children[1];
|
||||||
if (body.style.display === null || body.style.display === '') {
|
if (body.style.display === null || body.style.display === '') {
|
||||||
target.innerHTML = '[ + ]';
|
target.textContent = '[ + ]';
|
||||||
body.style.display = 'none';
|
body.style.display = 'none';
|
||||||
} else {
|
} else {
|
||||||
target.innerHTML = '[ - ]';
|
target.textContent = '[ − ]';
|
||||||
body.style.display = '';
|
body.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,13 +44,13 @@ function swap_comments(event) {
|
|||||||
function hide_youtube_replies(event) {
|
function hide_youtube_replies(event) {
|
||||||
var target = event.target;
|
var target = event.target;
|
||||||
|
|
||||||
sub_text = target.getAttribute('data-inner-text');
|
var sub_text = target.getAttribute('data-inner-text');
|
||||||
inner_text = target.getAttribute('data-sub-text');
|
var inner_text = target.getAttribute('data-sub-text');
|
||||||
|
|
||||||
body = target.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.children[1];
|
||||||
body.style.display = 'none';
|
body.style.display = 'none';
|
||||||
|
|
||||||
target.innerHTML = sub_text;
|
target.textContent = sub_text;
|
||||||
target.onclick = show_youtube_replies;
|
target.onclick = show_youtube_replies;
|
||||||
target.setAttribute('data-inner-text', inner_text);
|
target.setAttribute('data-inner-text', inner_text);
|
||||||
target.setAttribute('data-sub-text', sub_text);
|
target.setAttribute('data-sub-text', sub_text);
|
||||||
@ -58,13 +59,13 @@ function hide_youtube_replies(event) {
|
|||||||
function show_youtube_replies(event) {
|
function show_youtube_replies(event) {
|
||||||
var target = event.target;
|
var target = event.target;
|
||||||
|
|
||||||
sub_text = target.getAttribute('data-inner-text');
|
var sub_text = target.getAttribute('data-inner-text');
|
||||||
inner_text = target.getAttribute('data-sub-text');
|
var inner_text = target.getAttribute('data-sub-text');
|
||||||
|
|
||||||
body = target.parentNode.parentNode.children[1];
|
var body = target.parentNode.parentNode.children[1];
|
||||||
body.style.display = '';
|
body.style.display = '';
|
||||||
|
|
||||||
target.innerHTML = sub_text;
|
target.textContent = sub_text;
|
||||||
target.onclick = hide_youtube_replies;
|
target.onclick = hide_youtube_replies;
|
||||||
target.setAttribute('data-inner-text', inner_text);
|
target.setAttribute('data-inner-text', inner_text);
|
||||||
target.setAttribute('data-sub-text', sub_text);
|
target.setAttribute('data-sub-text', sub_text);
|
||||||
@ -116,25 +117,26 @@ function number_with_separator(val) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_playlist(plid, retries) {
|
function get_playlist(plid, retries) {
|
||||||
if (retries == undefined) retries = 5;
|
if (retries === undefined) retries = 5;
|
||||||
playlist = document.getElementById('playlist');
|
var playlist = document.getElementById('playlist');
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to pull playlist');
|
console.warn('Failed to pull playlist');
|
||||||
playlist.innerHTML = '';
|
playlist.innerHTML = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
playlist.innerHTML = ' \
|
playlist.innerHTML = ' \
|
||||||
<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3> \
|
<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3> \
|
||||||
<hr>'
|
<hr>';
|
||||||
|
|
||||||
|
var plid_url;
|
||||||
if (plid.startsWith('RD')) {
|
if (plid.startsWith('RD')) {
|
||||||
var plid_url = '/api/v1/mixes/' + plid +
|
plid_url = '/api/v1/mixes/' + plid +
|
||||||
'?continuation=' + video_data.id +
|
'?continuation=' + video_data.id +
|
||||||
'&format=html&hl=' + video_data.preferences.locale;
|
'&format=html&hl=' + video_data.preferences.locale;
|
||||||
} else {
|
} else {
|
||||||
var plid_url = '/api/v1/playlists/' + plid +
|
plid_url = '/api/v1/playlists/' + plid +
|
||||||
'?index=' + video_data.index +
|
'?index=' + video_data.index +
|
||||||
'&continuation=' + video_data.id +
|
'&continuation=' + video_data.id +
|
||||||
'&format=html&hl=' + video_data.preferences.locale;
|
'&format=html&hl=' + video_data.preferences.locale;
|
||||||
@ -146,8 +148,8 @@ function get_playlist(plid, retries) {
|
|||||||
xhr.open('GET', plid_url, true);
|
xhr.open('GET', plid_url, true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
playlist.innerHTML = xhr.response.playlistHtml;
|
playlist.innerHTML = xhr.response.playlistHtml;
|
||||||
var nextVideo = document.getElementById(xhr.response.nextVideo);
|
var nextVideo = document.getElementById(xhr.response.nextVideo);
|
||||||
nextVideo.parentNode.parentNode.scrollTop = nextVideo.offsetTop;
|
nextVideo.parentNode.parentNode.scrollTop = nextVideo.offsetTop;
|
||||||
@ -185,35 +187,35 @@ function get_playlist(plid, retries) {
|
|||||||
document.getElementById('continue').style.display = '';
|
document.getElementById('continue').style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
playlist = document.getElementById('playlist');
|
playlist = document.getElementById('playlist');
|
||||||
playlist.innerHTML =
|
playlist.innerHTML =
|
||||||
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3><hr>';
|
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3><hr>';
|
||||||
|
|
||||||
console.log('Pulling playlist timed out... ' + retries + '/5');
|
console.warn('Pulling playlist timed out... ' + retries + '/5');
|
||||||
setTimeout(function () { get_playlist(plid, retries - 1) }, 1000);
|
setTimeout(function () { get_playlist(plid, retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
playlist = document.getElementById('playlist');
|
playlist = document.getElementById('playlist');
|
||||||
playlist.innerHTML =
|
playlist.innerHTML =
|
||||||
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3><hr>';
|
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3><hr>';
|
||||||
|
|
||||||
console.log('Pulling playlist timed out... ' + retries + '/5');
|
console.warn('Pulling playlist timed out... ' + retries + '/5');
|
||||||
get_playlist(plid, retries - 1);
|
get_playlist(plid, retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_reddit_comments(retries) {
|
function get_reddit_comments(retries) {
|
||||||
if (retries == undefined) retries = 5;
|
if (retries === undefined) retries = 5;
|
||||||
comments = document.getElementById('comments');
|
var comments = document.getElementById('comments');
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to pull comments');
|
console.warn('Failed to pull comments');
|
||||||
comments.innerHTML = '';
|
comments.innerHTML = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -231,12 +233,12 @@ function get_reddit_comments(retries) {
|
|||||||
xhr.open('GET', url, true);
|
xhr.open('GET', url, true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
comments.innerHTML = ' \
|
comments.innerHTML = ' \
|
||||||
<div> \
|
<div> \
|
||||||
<h3> \
|
<h3> \
|
||||||
<a href="javascript:void(0)">[ - ]</a> \
|
<a href="javascript:void(0)">[ − ]</a> \
|
||||||
{title} \
|
{title} \
|
||||||
</h3> \
|
</h3> \
|
||||||
<p> \
|
<p> \
|
||||||
@ -263,34 +265,34 @@ function get_reddit_comments(retries) {
|
|||||||
comments.children[0].children[1].children[0].onclick = swap_comments;
|
comments.children[0].children[1].children[0].onclick = swap_comments;
|
||||||
} else {
|
} else {
|
||||||
if (video_data.params.comments[1] === 'youtube') {
|
if (video_data.params.comments[1] === 'youtube') {
|
||||||
console.log('Pulling comments failed... ' + retries + '/5');
|
console.warn('Pulling comments failed... ' + retries + '/5');
|
||||||
setTimeout(function () { get_youtube_comments(retries - 1) }, 1000);
|
setTimeout(function () { get_youtube_comments(retries - 1); }, 1000);
|
||||||
} else {
|
} else {
|
||||||
comments.innerHTML = fallback;
|
comments.innerHTML = fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
console.log('Pulling comments failed... ' + retries + '/5');
|
console.warn('Pulling comments failed... ' + retries + '/5');
|
||||||
setTimeout(function () { get_reddit_comments(retries - 1) }, 1000);
|
setTimeout(function () { get_reddit_comments(retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Pulling comments failed... ' + retries + '/5');
|
console.warn('Pulling comments failed... ' + retries + '/5');
|
||||||
get_reddit_comments(retries - 1);
|
get_reddit_comments(retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_youtube_comments(retries) {
|
function get_youtube_comments(retries) {
|
||||||
if (retries == undefined) retries = 5;
|
if (retries === undefined) retries = 5;
|
||||||
comments = document.getElementById('comments');
|
var comments = document.getElementById('comments');
|
||||||
|
|
||||||
if (retries <= 0) {
|
if (retries <= 0) {
|
||||||
console.log('Failed to pull comments');
|
console.warn('Failed to pull comments');
|
||||||
comments.innerHTML = '';
|
comments.innerHTML = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -309,12 +311,12 @@ function get_youtube_comments(retries) {
|
|||||||
xhr.open('GET', url, true);
|
xhr.open('GET', url, true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
comments.innerHTML = ' \
|
comments.innerHTML = ' \
|
||||||
<div> \
|
<div> \
|
||||||
<h3> \
|
<h3> \
|
||||||
<a href="javascript:void(0)">[ - ]</a> \
|
<a href="javascript:void(0)">[ − ]</a> \
|
||||||
{commentsText} \
|
{commentsText} \
|
||||||
</h3> \
|
</h3> \
|
||||||
<b> \
|
<b> \
|
||||||
@ -336,27 +338,27 @@ function get_youtube_comments(retries) {
|
|||||||
comments.children[0].children[1].children[0].onclick = swap_comments;
|
comments.children[0].children[1].children[0].onclick = swap_comments;
|
||||||
} else {
|
} else {
|
||||||
if (video_data.params.comments[1] === 'youtube') {
|
if (video_data.params.comments[1] === 'youtube') {
|
||||||
setTimeout(function () { get_youtube_comments(retries - 1) }, 1000);
|
setTimeout(function () { get_youtube_comments(retries - 1); }, 1000);
|
||||||
} else {
|
} else {
|
||||||
comments.innerHTML = '';
|
comments.innerHTML = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.onerror = function () {
|
xhr.onerror = function () {
|
||||||
comments.innerHTML =
|
comments.innerHTML =
|
||||||
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3>';
|
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3>';
|
||||||
console.log('Pulling comments failed... ' + retries + '/5');
|
console.warn('Pulling comments failed... ' + retries + '/5');
|
||||||
setTimeout(function () { get_youtube_comments(retries - 1) }, 1000);
|
setTimeout(function () { get_youtube_comments(retries - 1); }, 1000);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
comments.innerHTML =
|
comments.innerHTML =
|
||||||
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3>';
|
'<h3 style="text-align:center"><div class="loading"><i class="icon ion-ios-refresh"></i></div></h3>';
|
||||||
console.log('Pulling comments failed... ' + retries + '/5');
|
console.warn('Pulling comments failed... ' + retries + '/5');
|
||||||
get_youtube_comments(retries - 1);
|
get_youtube_comments(retries - 1);
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
@ -373,7 +375,7 @@ function get_youtube_replies(target, load_more, load_replies) {
|
|||||||
'?format=html' +
|
'?format=html' +
|
||||||
'&hl=' + video_data.preferences.locale +
|
'&hl=' + video_data.preferences.locale +
|
||||||
'&thin_mode=' + video_data.preferences.thin_mode +
|
'&thin_mode=' + video_data.preferences.thin_mode +
|
||||||
'&continuation=' + continuation
|
'&continuation=' + continuation;
|
||||||
if (load_replies) {
|
if (load_replies) {
|
||||||
url += '&action=action_get_comment_replies';
|
url += '&action=action_get_comment_replies';
|
||||||
}
|
}
|
||||||
@ -383,8 +385,8 @@ function get_youtube_replies(target, load_more, load_replies) {
|
|||||||
xhr.open('GET', url, true);
|
xhr.open('GET', url, true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status === 200) {
|
||||||
if (load_more) {
|
if (load_more) {
|
||||||
body = body.parentNode.parentNode;
|
body = body.parentNode.parentNode;
|
||||||
body.removeChild(body.lastElementChild);
|
body.removeChild(body.lastElementChild);
|
||||||
@ -412,12 +414,12 @@ function get_youtube_replies(target, load_more, load_replies) {
|
|||||||
body.innerHTML = fallback;
|
body.innerHTML = fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.ontimeout = function () {
|
xhr.ontimeout = function () {
|
||||||
console.log('Pulling comments failed.');
|
console.warn('Pulling comments failed.');
|
||||||
body.innerHTML = fallback;
|
body.innerHTML = fallback;
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
@ -461,7 +463,7 @@ window.addEventListener('load', function (e) {
|
|||||||
} else if (video_data.params.comments[1] === 'reddit') {
|
} else if (video_data.params.comments[1] === 'reddit') {
|
||||||
get_reddit_comments();
|
get_reddit_comments();
|
||||||
} else {
|
} else {
|
||||||
comments = document.getElementById('comments');
|
var comments = document.getElementById('comments');
|
||||||
comments.innerHTML = '';
|
comments.innerHTML = '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
var watched_data = JSON.parse(document.getElementById('watched_data').innerHTML);
|
'use strict';
|
||||||
|
var watched_data = JSON.parse(document.getElementById('watched_data').textContent);
|
||||||
|
|
||||||
function mark_watched(target) {
|
function mark_watched(target) {
|
||||||
var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode;
|
var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode;
|
||||||
@ -13,12 +14,12 @@ function mark_watched(target) {
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
tile.style.display = '';
|
tile.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + watched_data.csrf_token);
|
xhr.send('csrf_token=' + watched_data.csrf_token);
|
||||||
}
|
}
|
||||||
@ -26,7 +27,7 @@ function mark_watched(target) {
|
|||||||
function mark_unwatched(target) {
|
function mark_unwatched(target) {
|
||||||
var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode;
|
var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode;
|
||||||
tile.style.display = 'none';
|
tile.style.display = 'none';
|
||||||
var count = document.getElementById('count')
|
var count = document.getElementById('count');
|
||||||
count.innerText = count.innerText - 1;
|
count.innerText = count.innerText - 1;
|
||||||
|
|
||||||
var url = '/watch_ajax?action_mark_unwatched=1&redirect=false' +
|
var url = '/watch_ajax?action_mark_unwatched=1&redirect=false' +
|
||||||
@ -38,13 +39,13 @@ function mark_unwatched(target) {
|
|||||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status != 200) {
|
if (xhr.status !== 200) {
|
||||||
count.innerText = count.innerText - 1 + 2;
|
count.innerText = count.innerText - 1 + 2;
|
||||||
tile.style.display = '';
|
tile.style.display = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
xhr.send('csrf_token=' + watched_data.csrf_token);
|
xhr.send('csrf_token=' + watched_data.csrf_token);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user