From 1ccc9412742c071bf33bdb110a31def9855f97ad Mon Sep 17 00:00:00 2001 From: Fernando Date: Mon, 18 Aug 2025 14:12:02 -0300 Subject: [PATCH 1/6] Add computed properties for history cache and filtered video list --- .../SubscriptionsTabUi/SubscriptionsTabUi.vue | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue index 425b8aa60b6a7..9b2615d621476 100644 --- a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue +++ b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue @@ -141,6 +141,20 @@ const fetchSubscriptionsAutomatically = computed(() => { return store.getters.getFetchSubscriptionsAutomatically }) +const historyCacheById = computed(() => { + return store.getters.getHistoryCacheById +}) + +const filteredVideoList = computed(() => { + if (store.getters.getHideWatchedSubs) { + return props.videoList.filter((video) => { + return !Object.hasOwn(historyCacheById.value, video.videoId) + }) + } else { + return props.videoList + } +}) + function increaseLimit() { dataLimit.value += props.initialDataLimit sessionStorage.setItem('subscriptionLimit', dataLimit.value.toFixed(0)) From c86a98600890a0d3c737e26768a30ad62f483630 Mon Sep 17 00:00:00 2001 From: Fernando Date: Mon, 18 Aug 2025 14:13:01 -0300 Subject: [PATCH 2/6] Refactor activeVideoList to use filteredVideoList and exclude watched videos from videoList --- .../components/SubscriptionsTabUi/SubscriptionsTabUi.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue index 9b2615d621476..b0ca0ec6655b4 100644 --- a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue +++ b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue @@ -125,10 +125,10 @@ const subscriptionLimit = sessionStorage.getItem('subscriptionLimit') const dataLimit = ref(subscriptionLimit !== null ? parseInt(subscriptionLimit) : props.initialDataLimit) const activeVideoList = computed(() => { - if (props.videoList.length < dataLimit.value) { - return props.videoList + if (filteredVideoList.value.length < dataLimit.value) { + return filteredVideoList.value } else { - return props.videoList.slice(0, dataLimit.value) + return filteredVideoList.value.slice(0, dataLimit.value) } }) From ad193df8f8bfe61e3a61b2ed57e8540b0aae5f88 Mon Sep 17 00:00:00 2001 From: Fernando Date: Sun, 24 Aug 2025 20:35:10 -0300 Subject: [PATCH 3/6] Creating a computed property to de-couple filteredVideoList from the store getters (SRP) --- .../components/SubscriptionsTabUi/SubscriptionsTabUi.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue index b0ca0ec6655b4..1a98b0619519d 100644 --- a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue +++ b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue @@ -145,8 +145,12 @@ const historyCacheById = computed(() => { return store.getters.getHistoryCacheById }) +const getHideWatchedSubs = computed(() => { + return store.getters.getHideWatchedSubs +}) + const filteredVideoList = computed(() => { - if (store.getters.getHideWatchedSubs) { + if (getHideWatchedSubs.value) { return props.videoList.filter((video) => { return !Object.hasOwn(historyCacheById.value, video.videoId) }) From 1f1438a3e8022ef263061d4932cd7ffc78742833 Mon Sep 17 00:00:00 2001 From: Fernando Date: Sun, 24 Aug 2025 20:43:35 -0300 Subject: [PATCH 4/6] Transferred filtering logic to SubscriptionsTabUi component --- src/renderer/helpers/subscriptions.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/renderer/helpers/subscriptions.js b/src/renderer/helpers/subscriptions.js index 854e6d2aca69e..e7116b7158ef9 100644 --- a/src/renderer/helpers/subscriptions.js +++ b/src/renderer/helpers/subscriptions.js @@ -31,14 +31,6 @@ export function updateVideoListAfterProcessing(videos) { }) } - if (store.getters.getHideWatchedSubs) { - const historyCacheById = store.getters.getHistoryCacheById - - videoList = videoList.filter((video) => { - return !Object.hasOwn(historyCacheById, video.videoId) - }) - } - // ordered last to show first eligible video from channel // if the first one incidentally failed one of the above checks if (store.getters.getOnlyShowLatestFromChannel) { From 9cdfbdade897c56c4066986c03eba8315ed6030c Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sun, 14 Sep 2025 14:56:43 +0200 Subject: [PATCH 5/6] Fix variable name --- .../components/SubscriptionsTabUi/SubscriptionsTabUi.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue index 1a98b0619519d..e28f5f49c2695 100644 --- a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue +++ b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue @@ -145,12 +145,12 @@ const historyCacheById = computed(() => { return store.getters.getHistoryCacheById }) -const getHideWatchedSubs = computed(() => { +const hideWatchedSubs = computed(() => { return store.getters.getHideWatchedSubs }) const filteredVideoList = computed(() => { - if (getHideWatchedSubs.value) { + if (hideWatchedSubs.value) { return props.videoList.filter((video) => { return !Object.hasOwn(historyCacheById.value, video.videoId) }) From 9e7b583f4b2f87d12841ac95a0675275b27e4b90 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Mon, 15 Sep 2025 18:33:14 +0200 Subject: [PATCH 6/6] Don't try to filter videos on the posts tab --- .../components/SubscriptionsTabUi/SubscriptionsTabUi.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue index e28f5f49c2695..86d1d4dcdbb6e 100644 --- a/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue +++ b/src/renderer/components/SubscriptionsTabUi/SubscriptionsTabUi.vue @@ -150,7 +150,7 @@ const hideWatchedSubs = computed(() => { }) const filteredVideoList = computed(() => { - if (hideWatchedSubs.value) { + if (hideWatchedSubs.value && !props.isCommunity) { return props.videoList.filter((video) => { return !Object.hasOwn(historyCacheById.value, video.videoId) })