Merge branch 'master' into playlist

This commit is contained in:
Bnyro 2022-08-06 12:54:55 +02:00 committed by GitHub
commit 33c88a766e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 53 additions and 34 deletions

View file

@ -49,7 +49,7 @@ export default {
data() { data() {
return { return {
channel: null, channel: null,
subscribed: this.authenticated ? false : this.isSubscribedLocally(this.channelId), subscribed: false,
}; };
}, },
mounted() { mounted() {
@ -68,7 +68,11 @@ export default {
}, },
methods: { methods: {
async fetchSubscribedStatus() { async fetchSubscribedStatus() {
if (!this.channelId || !this.authenticated) return; if (!this.channel.id) return;
if (!this.authenticated) {
this.subscribed = this.isSubscribedLocally(this.channel.id);
return;
}
this.fetchJson( this.fetchJson(
this.authApiUrl() + "/subscribed", this.authApiUrl() + "/subscribed",
@ -94,7 +98,7 @@ export default {
.then(() => { .then(() => {
if (!this.channel.error) { if (!this.channel.error) {
document.title = this.channel.name + " - Piped"; document.title = this.channel.name + " - Piped";
if (this.authenticated) this.fetchSubscribedStatus(); this.fetchSubscribedStatus();
this.updateWatched(this.channel.relatedStreams); this.updateWatched(this.channel.relatedStreams);
} }
}); });

View file

@ -155,7 +155,7 @@ export default {
importSubscriptionsLocally(newChannels) { importSubscriptionsLocally(newChannels) {
const subscriptions = this.override const subscriptions = this.override
? [...new Set(newChannels)] ? [...new Set(newChannels)]
: [...new Set(this.getLocalSubscriptions().concat(newChannels))]; : [...new Set((this.getLocalSubscriptions() ?? []).concat(newChannels))];
// Sort for better cache hits // Sort for better cache hits
subscriptions.sort(); subscriptions.sort();
localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions)); localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions));

View file

@ -85,7 +85,7 @@ export default {
this.hotkeysPromise.then(() => { this.hotkeysPromise.then(() => {
var self = this; var self = this;
this.$hotkeys( this.$hotkeys(
"f,m,j,k,l,c,space,up,down,left,right,0,1,2,3,4,5,6,7,8,9,shift+,,shift+.", "f,m,j,k,l,c,space,up,down,left,right,0,1,2,3,4,5,6,7,8,9,shift+n,shift+,,shift+.",
function (e, handler) { function (e, handler) {
const videoEl = self.$refs.videoEl; const videoEl = self.$refs.videoEl;
switch (handler.key) { switch (handler.key) {
@ -171,6 +171,10 @@ export default {
videoEl.currentTime = videoEl.duration * 0.9; videoEl.currentTime = videoEl.duration * 0.9;
e.preventDefault(); e.preventDefault();
break; break;
case "shift+n":
self.navigateNext();
e.preventDefault();
break;
case "shift+,": case "shift+,":
self.$player.trickPlay(Math.max(videoEl.playbackRate - 0.25, 0.25)); self.$player.trickPlay(Math.max(videoEl.playbackRate - 0.25, 0.25));
break; break;
@ -225,8 +229,11 @@ export default {
var request = store.get(this.video.id); var request = store.get(this.video.id);
request.onsuccess = function (event) { request.onsuccess = function (event) {
var video = event.target.result; var video = event.target.result;
if (video?.currentTime) { const currentTime = video?.currentTime;
videoEl.currentTime = video.currentTime; if (currentTime) {
if (currentTime < component.video.duration * 0.9) {
videoEl.currentTime = currentTime;
}
} }
}; };
@ -372,30 +379,12 @@ export default {
}); });
videoEl.addEventListener("ended", () => { videoEl.addEventListener("ended", () => {
if (!this.selectedAutoLoop && this.selectedAutoPlay && this.video.relatedStreams.length > 0) { if (
const params = this.$route.query; !this.selectedAutoLoop &&
let url = this.playlist?.relatedStreams?.[this.index]?.url ?? this.video.relatedStreams[0].url; this.selectedAutoPlay &&
const searchParams = new URLSearchParams(); (this.playlist?.relatedStreams?.length > 0 || this.video.relatedStreams.length > 0)
for (var param in params) ) {
switch (param) { this.navigateNext();
case "v":
case "t":
break;
case "index":
if (this.index < this.playlist.relatedStreams.length)
searchParams.set("index", this.index + 1);
break;
case "list":
if (this.index < this.playlist.relatedStreams.length)
searchParams.set("list", params.list);
break;
default:
searchParams.set(param, params[param]);
break;
}
const paramStr = searchParams.toString();
if (paramStr.length > 0) url += "&" + paramStr;
this.$router.push(url);
} }
}); });
} }
@ -558,6 +547,29 @@ export default {
this.$refs.videoEl.currentTime = time; this.$refs.videoEl.currentTime = time;
} }
}, },
navigateNext() {
const params = this.$route.query;
let url = this.playlist?.relatedStreams?.[this.index]?.url ?? this.video.relatedStreams[0].url;
const searchParams = new URLSearchParams();
for (var param in params)
switch (param) {
case "v":
case "t":
break;
case "index":
if (this.index < this.playlist.relatedStreams.length) searchParams.set("index", this.index + 1);
break;
case "list":
if (this.index < this.playlist.relatedStreams.length) searchParams.set("list", params.list);
break;
default:
searchParams.set(param, params[param]);
break;
}
const paramStr = searchParams.toString();
if (paramStr.length > 0) url += "&" + paramStr;
this.$router.push(url);
},
updateMarkers() { updateMarkers() {
const markers = this.$refs.container.querySelector(".shaka-ad-markers"); const markers = this.$refs.container.querySelector(".shaka-ad-markers");
const array = ["to right"]; const array = ["to right"];

View file

@ -427,7 +427,10 @@ export default {
}, },
async fetchSubscribedStatus() { async fetchSubscribedStatus() {
if (!this.channelId) return; if (!this.channelId) return;
if (!this.authenticated) this.subscribed = this.isSubscribedLocally(this.channelId); if (!this.authenticated) {
this.subscribed = this.isSubscribedLocally(this.channelId);
return;
}
this.fetchJson( this.fetchJson(
this.authApiUrl() + "/subscribed", this.authApiUrl() + "/subscribed",

View file

@ -217,8 +217,8 @@ const mixin = {
localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions)); localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions));
}, },
getUnauthenticatedChannels() { getUnauthenticatedChannels() {
const localSubscriptions = this.getLocalSubscriptions(); const localSubscriptions = this.getLocalSubscriptions() ?? [];
return localSubscriptions != null ? localSubscriptions.join(",") : ""; return localSubscriptions.join(",");
}, },
/* generate a temporary file and ask the user to download it */ /* generate a temporary file and ask the user to download it */
download(text, filename, type) { download(text, filename, type) {