Order watched recommended videos last (#4394)

* Implement change

* Update to use local variable to potentially improve performance in  non-first load case
This commit is contained in:
Jason 2023-12-02 09:19:25 +00:00 committed by GitHub
parent a67541ed03
commit fc210aa663
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 2 deletions

View File

@ -277,10 +277,16 @@ export default defineComponent({
this.isFamilyFriendly = result.basic_info.is_family_safe
this.recommendedVideos = result.watch_next_feed
const recommendedVideos = result.watch_next_feed
?.filter((item) => item.type === 'CompactVideo')
.map(parseLocalWatchNextVideo) ?? []
// place watched recommended videos last
this.recommendedVideos = [
...recommendedVideos.filter((video) => !this.isRecommendedVideoWatched(video.videoId)),
...recommendedVideos.filter((video) => this.isRecommendedVideoWatched(video.videoId))
]
if (this.showFamilyFriendlyOnly && !this.isFamilyFriendly) {
this.isLoading = false
this.handleVideoEnded()
@ -699,7 +705,12 @@ export default defineComponent({
this.videoPublished = result.published * 1000
this.videoDescriptionHtml = result.descriptionHtml
this.recommendedVideos = result.recommendedVideos
const recommendedVideos = result.recommendedVideos
// place watched recommended videos last
this.recommendedVideos = [
...recommendedVideos.filter((video) => !this.isRecommendedVideoWatched(video.videoId)),
...recommendedVideos.filter((video) => this.isRecommendedVideoWatched(video.videoId))
]
this.adaptiveFormats = await this.getAdaptiveFormatsInvidious(result)
this.isLive = result.liveNow
this.isFamilyFriendly = result.isFamilyFriendly
@ -1067,6 +1078,10 @@ export default defineComponent({
this.checkIfWatched()
},
isRecommendedVideoWatched: function (videoId) {
return !!this.$store.getters.getHistoryCacheById[videoId]
},
checkIfWatched: function () {
if (!this.isLive) {
if (this.timestamp) {