0
0
Fork 0
mirror of https://github.com/VueTubeApp/VueTube synced 2024-11-16 00:15:08 +00:00
VueTube/NUXT/pages/home.vue

76 lines
2.1 KiB
Vue
Raw Normal View History

2022-03-16 00:31:03 +00:00
<template>
<!--
* Videos are now polled from '~/components/recommended.vue'
* This is to allow use of "recommended" videos on other pages such as /watch
* -Front
* -->
2022-03-24 11:47:13 +00:00
<div>
<!-- Video Loading Animation -->
2022-04-01 03:03:25 +00:00
<vid-load-renderer v-if="recommends.length == 0" :count="10" />
<div v-for="(section, index) in recommends" :key="index">
<horizontal-list-renderer :render="section.contents[0]" />
</div>
2022-04-24 08:05:36 +00:00
<vid-load-renderer v-if="loading" :count="1" />
<observer @intersect="paginate" v-else-if="recommends.length > 0" />
2022-03-24 11:47:13 +00:00
</div>
</template>
<script>
2022-03-24 20:46:17 +00:00
import horizontalListRenderer from "~/components/ListRenderers/horizontalListRenderer.vue";
import VidLoadRenderer from "~/components/vidLoadRenderer.vue";
import Observer from "~/components/observer.vue";
export default {
components: { horizontalListRenderer, VidLoadRenderer, Observer },
2022-05-05 04:28:51 +00:00
data: () => ({
loading: false,
}),
2022-03-24 04:28:57 +00:00
computed: {
recommends: {
get() {
2022-05-02 04:42:56 +00:00
return [...this.$store.state.recommendedVideos];
2022-03-24 04:28:57 +00:00
},
set(val) {
this.$store.commit("updateRecommendedVideos", val);
},
},
},
methods: {
paginate() {
2022-04-24 08:05:36 +00:00
this.loading = true;
const continuationCode = this.recommends[
this.recommends.length - 1
].continuations.find((element) => element.nextContinuationData)
?.nextContinuationData.continuation;
if (continuationCode) {
this.$youtube
.recommendContinuation(
this.recommends[this.recommends.length - 1].continuations.find(
(element) => element.nextContinuationData
).nextContinuationData.continuation,
"browse"
)
.then((result) => {
2022-04-01 03:03:25 +00:00
this.loading = false;
this.recommends.push(result);
});
2022-04-24 08:05:36 +00:00
} else {
this.loading = false;
}
},
},
mounted() {
if (!this.recommends.length) {
2022-03-24 04:28:57 +00:00
this.$youtube
.recommend()
.then((result) => {
if (result) this.recommends = [result];
2022-03-24 04:28:57 +00:00
})
.catch((error) => this.$logger("Home Page", error, true));
}
},
};
2022-03-21 23:47:11 +00:00
</script>