From e4c60024371f0ecc09f268e26dc30e305ad42c40 Mon Sep 17 00:00:00 2001 From: redArch Date: Sun, 28 Jun 2026 12:35:01 -0400 Subject: [PATCH 1/3] Added play all button to channel tabs --- src/renderer/views/Channel/Channel.css | 2 ++ src/renderer/views/Channel/Channel.vue | 24 ++++++++++++++++++++++++ static/locales/en-US.yaml | 1 + 3 files changed, 27 insertions(+) diff --git a/src/renderer/views/Channel/Channel.css b/src/renderer/views/Channel/Channel.css index c2a6815f8b202..2cb198c3e0b3a 100644 --- a/src/renderer/views/Channel/Channel.css +++ b/src/renderer/views/Channel/Channel.css @@ -15,6 +15,8 @@ display: flex; flex-direction: row; justify-content: flex-end; + align-items: baseline; + gap: 10px; margin-block-end: 10px; } diff --git a/src/renderer/views/Channel/Channel.vue b/src/renderer/views/Channel/Channel.vue index 254e87d70277f..38ed8c3450d47 100644 --- a/src/renderer/views/Channel/Channel.vue +++ b/src/renderer/views/Channel/Channel.vue @@ -39,6 +39,11 @@ :related-channels="relatedChannels" />
+ { return values }) +const showPlayAllButton = computed(() => { + switch (currentTab.value) { + case 'videos': return (videoSortBy.value === 'newest' || videoSortBy.value === 'popular') && (showFetchMoreButton.value || filteredVideos.value.length > 1) + case 'shorts': return (shortSortBy.value === 'newest' || shortSortBy.value === 'popular') && (showFetchMoreButton.value || filteredShorts.value.length > 1) + case 'live': return (liveSortBy.value === 'newest' || liveSortBy.value === 'popular') && (showFetchMoreButton.value || filteredLive.value.length > 1) + default: return false + } +}) + +const currentTabPlayAllRoute = computed(() => { + switch (currentTab.value) { + case 'videos': return `/playlist/${getChannelPlaylistId(id.value, 'videos', videoSortBy.value)}` + case 'shorts': return `/playlist/${getChannelPlaylistId(id.value, 'shorts', shortSortBy.value)}` + case 'live': return `/playlist/${getChannelPlaylistId(id.value, 'live', liveSortBy.value)}` + default: return '' + } +}) + watch(route, () => { if (skipRouteChangeWatcherOnce) { skipRouteChangeWatcherOnce = false diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index f7384a4400b14..1e9c2e3769f33 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -775,6 +775,7 @@ Channel: This channel does not allow searching: This channel does not allow searching This channel is age-restricted and currently cannot be viewed in FreeTube.: This channel is age-restricted and currently cannot be viewed in FreeTube. Channel Tabs: Channel Tabs + Play All: Play All Videos: Videos: Videos This channel does not currently have any videos: This channel does not currently From 062e78997328c9964e523ceb96e2aa1367e94a99 Mon Sep 17 00:00:00 2001 From: redArch Date: Tue, 7 Jul 2026 20:38:01 -0400 Subject: [PATCH 2/3] Add margin for consistent spacing of button --- src/renderer/views/Channel/Channel.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/views/Channel/Channel.vue b/src/renderer/views/Channel/Channel.vue index 38ed8c3450d47..d742d82258f5a 100644 --- a/src/renderer/views/Channel/Channel.vue +++ b/src/renderer/views/Channel/Channel.vue @@ -41,6 +41,7 @@
From f9d3089274c68453907ef94c40a1c64a98c37143 Mon Sep 17 00:00:00 2001 From: redArch Date: Wed, 8 Jul 2026 22:03:02 -0400 Subject: [PATCH 3/3] change play all to view all --- src/renderer/views/Channel/Channel.vue | 10 +++++----- static/locales/en-US.yaml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/renderer/views/Channel/Channel.vue b/src/renderer/views/Channel/Channel.vue index d742d82258f5a..b555e2ea70580 100644 --- a/src/renderer/views/Channel/Channel.vue +++ b/src/renderer/views/Channel/Channel.vue @@ -40,10 +40,10 @@ />
{ return values }) -const showPlayAllButton = computed(() => { +const showViewAllButton = computed(() => { switch (currentTab.value) { case 'videos': return (videoSortBy.value === 'newest' || videoSortBy.value === 'popular') && (showFetchMoreButton.value || filteredVideos.value.length > 1) case 'shorts': return (shortSortBy.value === 'newest' || shortSortBy.value === 'popular') && (showFetchMoreButton.value || filteredShorts.value.length > 1) @@ -526,7 +526,7 @@ const showPlayAllButton = computed(() => { } }) -const currentTabPlayAllRoute = computed(() => { +const currentTabViewAllRoute = computed(() => { switch (currentTab.value) { case 'videos': return `/playlist/${getChannelPlaylistId(id.value, 'videos', videoSortBy.value)}` case 'shorts': return `/playlist/${getChannelPlaylistId(id.value, 'shorts', shortSortBy.value)}` diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 1e9c2e3769f33..7b094ff928fe5 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -775,7 +775,7 @@ Channel: This channel does not allow searching: This channel does not allow searching This channel is age-restricted and currently cannot be viewed in FreeTube.: This channel is age-restricted and currently cannot be viewed in FreeTube. Channel Tabs: Channel Tabs - Play All: Play All + View All: View All Videos: Videos: Videos This channel does not currently have any videos: This channel does not currently