From c51a3a828efa03e6d9bb3190ea2d9a804428638e Mon Sep 17 00:00:00 2001 From: Bnyro <82752168+Bnyro@users.noreply.github.com> Date: Mon, 1 Aug 2022 16:16:06 +0200 Subject: [PATCH] unauthenticated subscriptions (#1270) * hmm * unauthenticated feed * unauthenticated rss * Small improvements to code. * add unauthenticated subscriptions * cleanup * Sort subs locally. * Fix some bugs and small improvements. Co-authored-by: Kavin <20838718+FireMasterK@users.noreply.github.com> --- src/components/ChannelPage.vue | 29 +++++++++++-------- src/components/FeedPage.vue | 29 +++++++++++-------- src/components/ImportPage.vue | 42 ++++++++++++++++++---------- src/components/NavBar.vue | 4 +-- src/components/SubscriptionsPage.vue | 29 +++++++++++-------- src/components/WatchVideo.vue | 28 +++++++++++-------- src/main.js | 21 ++++++++++++++ 7 files changed, 118 insertions(+), 64 deletions(-) diff --git a/src/components/ChannelPage.vue b/src/components/ChannelPage.vue index 3755f54d..42dceb4d 100644 --- a/src/components/ChannelPage.vue +++ b/src/components/ChannelPage.vue @@ -14,7 +14,6 @@

@@ -41,17 +41,16 @@ export default { }, computed: { getRssUrl(_this) { - return _this.authApiUrl() + "/feed/rss?authToken=" + _this.getAuthToken(); + if (_this.authenticated) return _this.authApiUrl() + "/feed/rss?authToken=" + _this.getAuthToken(); + else return _this.authApiUrl() + "/feed/unauthenticated/rss?channels=" + _this.getUnauthenticatedChannels(); }, }, mounted() { - if (this.authenticated) - this.fetchFeed().then(videos => { - this.videosStore = videos; - this.loadMoreVideos(); - this.updateWatched(this.videos); - }); - else this.$router.push("/login"); + this.fetchFeed().then(videos => { + this.videosStore = videos; + this.loadMoreVideos(); + this.updateWatched(this.videos); + }); }, activated() { document.title = this.$t("titles.feed") + " - Piped"; @@ -66,9 +65,15 @@ export default { }, methods: { async fetchFeed() { - return await this.fetchJson(this.authApiUrl() + "/feed", { - authToken: this.getAuthToken(), - }); + if (this.authenticated) { + return await this.fetchJson(this.authApiUrl() + "/feed", { + authToken: this.getAuthToken(), + }); + } else { + return await this.fetchJson(this.authApiUrl() + "/feed/unauthenticated", { + channels: this.getUnauthenticatedChannels(), + }); + } }, loadMoreVideos() { this.currentVideoCount = Math.min(this.currentVideoCount + this.videoStep, this.videosStore.length); diff --git a/src/components/ImportPage.vue b/src/components/ImportPage.vue index dcc354b0..4d8791d8 100644 --- a/src/components/ImportPage.vue +++ b/src/components/ImportPage.vue @@ -69,7 +69,6 @@ export default { }, }, activated() { - if (!this.authenticated) this.$router.push("/login"); document.title = "Import - Piped"; }, methods: { @@ -132,21 +131,34 @@ export default { }); }, handleImport() { - this.fetchJson( - this.authApiUrl() + "/import", - { - override: this.override, - }, - { - method: "POST", - headers: { - Authorization: this.getAuthToken(), + if (this.authenticated) { + this.fetchJson( + this.authApiUrl() + "/import", + { + override: this.override, }, - body: JSON.stringify(this.subscriptions), - }, - ).then(json => { - if (json.message === "ok") window.location = "/feed"; - }); + { + method: "POST", + headers: { + Authorization: this.getAuthToken(), + }, + body: JSON.stringify(this.subscriptions), + }, + ).then(json => { + if (json.message === "ok") window.location = "/feed"; + }); + } else { + this.importSubscriptionsLocally(this.subscriptions); + window.location = "/feed"; + } + }, + importSubscriptionsLocally(newChannels) { + const subscriptions = this.override + ? [...new Set(newChannels)] + : [...new Set(this.getLocalSubscriptions().concat(newChannels))]; + // Sort for better cache hits + subscriptions.sort(); + localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions)); }, }, }; diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index aa3707df..31787bac 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -52,7 +52,7 @@
  • -
  • +
  • @@ -81,7 +81,7 @@
  • -
  • +
  • diff --git a/src/components/SubscriptionsPage.vue b/src/components/SubscriptionsPage.vue index 793e8288..4d7affaf 100644 --- a/src/components/SubscriptionsPage.vue +++ b/src/components/SubscriptionsPage.vue @@ -1,7 +1,7 @@