From 85c6722fa3f7822a45684b04886e1d786f4b7c77 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 11 Nov 2021 06:28:10 +0530 Subject: [PATCH] Unify subscription handling across the codebase --- src/components/SubscriptionButton.vue | 60 +++++++++++++++++++++++++++ src/routes/Channel.vue | 51 ++++------------------- src/routes/Subscriptions.vue | 28 ++++--------- src/routes/WatchVideo.vue | 36 ++-------------- src/tools/libpiped.js | 5 +++ 5 files changed, 84 insertions(+), 96 deletions(-) create mode 100644 src/components/SubscriptionButton.vue diff --git a/src/components/SubscriptionButton.vue b/src/components/SubscriptionButton.vue new file mode 100644 index 0000000..0effb02 --- /dev/null +++ b/src/components/SubscriptionButton.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/routes/Channel.vue b/src/routes/Channel.vue index e73d94b..485127c 100644 --- a/src/routes/Channel.vue +++ b/src/routes/Channel.vue @@ -11,12 +11,7 @@
{{ channel.name }}
- - {{ subscribed ? 'Unsubscribe' : 'Subscribe' }} - +
@@ -42,14 +37,14 @@ import { chunk as _chunk } from 'lodash-es' import ErrorHandler from '@/components/ErrorHandler' import VideoItem from '@/components/VideoItem.vue' +import SubscriptionButton from '@/components/SubscriptionButton' import { LibPiped } from '@/tools/libpiped' export default { data () { return { - channel: null, - subscribed: null + channel: null } }, metaInfo () { @@ -99,7 +94,10 @@ export default { }, mounted () { - this.getChannelData() + this.fetchChannel() + }, + watch: { + '$route.params.channelId': 'fetchChannel' }, methods: { async fetchChannel () { @@ -108,40 +106,6 @@ export default { }) }, - async fetchSubscribedStatus () { - const { channelId } = this.$route.params - if (!(channelId && this.$store.getters['auth/isCurrentlyAuthenticated'])) { - return - } - - const resp = await this.$store.dispatch('auth/makeRequest', { - path: '/subscribed', - params: { - channelId - } - }) - - this.subscribed = resp.subscribed - }, - - async subscribeHandler () { - await this.$store.dispatch('auth/makeRequest', { - method: 'POST', - path: (this.subscribed ? '/unsubscribe' : '/subscribe'), - data: { - channelId: this.channelId - } - }) - this.subscribed = !this.subscribed - }, - - async getChannelData () { - return Promise.all([ - this.fetchChannel(), - this.fetchSubscribedStatus() - ]) - }, - onRelatedStreamsEndIntersect (entries) { if (entries[0].isIntersecting) { this.fetchMoreVideos() @@ -172,6 +136,7 @@ export default { } }, components: { + SubscriptionButton, ErrorHandler, VideoItem } diff --git a/src/routes/Subscriptions.vue b/src/routes/Subscriptions.vue index 4e56f0e..fdce3a3 100644 --- a/src/routes/Subscriptions.vue +++ b/src/routes/Subscriptions.vue @@ -8,12 +8,7 @@ {{ channel.name }} - - {{ channel.subscribed ? 'Unsubscribe' : 'Subscribe' }} - + @@ -24,8 +19,12 @@