From bf4c82654c893d6f4f824ee7c3501d43eedc9636 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 10 Apr 2024 13:10:30 -0400 Subject: [PATCH 01/19] Update references of `FreeTubeCordova` to `FreeTubeAndroid` (#4922) * Update reference of `FreeTubeCordova` to `FreeTubeAndroid` * Update reference of `FreeTubeCordova` in bug report template && issue labeler --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/issue-labeler.yml | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 3ee6b6eaf9889..aef914ee3f668 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -92,7 +92,7 @@ body: - Portable - .rpm - .zip - - .apk (Android, FreeTubeCordova Unofficial) + - .apk (FreeTubeAndroid Unofficial) - AUR (Unofficial) - Chocolatey (Unofficial) - Homebrew (Unofficial) diff --git a/.github/issue-labeler.yml b/.github/issue-labeler.yml index 1d08f2788ff0b..38178571e5d68 100644 --- a/.github/issue-labeler.yml +++ b/.github/issue-labeler.yml @@ -2,7 +2,7 @@ - '(visual bug)' 'B: Unofficial Download': - - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(Android, FreeTubeCordova Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' + - '(AUR \(Unofficial\)|Chocolatey \(Unofficial\)|\.apk \(FreeTubeAndroid Unofficial\)|Homebrew \(Unofficial\)|PortableApps \(Unofficial\)|WAPT \(Unofficial\)|winget \(Unofficial\)|Scoop \(Unofficial\)|Snapcraft \(Unofficial\)|MPR \(Unofficial\)|Nix \(Unofficial\))' 'B: keyboard control': - '(keyboard control not working)' diff --git a/README.md b/README.md index 5a43ba89ceba9..1969609485ef7 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ The first build with a green check mark is the latest build. * Chocolatey: [Download](https://chocolatey.org/packages/freetube/) -* FreeTubeCordova (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeCordova/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeCordova) +* FreeTubeAndroid (FreeTube port for Android and PWA): [Download](https://github.com/MarmadileManteater/FreeTubeAndroid/releases) and [Source Code](https://github.com/MarmadileManteater/FreeTubeAndroid) * Homebrew Formulae (Mac only): [Download](https://formulae.brew.sh/cask/freetube) From f9204c08dfcc8f483cd491f47367f157c6970eea Mon Sep 17 00:00:00 2001 From: NicolaeFericitu Date: Wed, 10 Apr 2024 17:16:16 +0000 Subject: [PATCH 02/19] Translated using Weblate (Romanian) Currently translated at 90.9% (744 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ro/ --- static/locales/ro.yaml | 50 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/static/locales/ro.yaml b/static/locales/ro.yaml index 2779c7de8c005..555e78d9bd0c5 100644 --- a/static/locales/ro.yaml +++ b/static/locales/ro.yaml @@ -50,7 +50,7 @@ A new blog is now available, {blogTitle}. Click to view more: 'Un nou blog este disponibil, {blogTitle}. Click to view more' # Search Bar -Search / Go to URL: 'Căutare / Întrodu la URL' +Search / Go to URL: 'Căutare / Accesați URL-ul' # In Filter Button Search Filters: Search Filters: 'Filtre de căutare' @@ -129,8 +129,48 @@ User Playlists: Aceasta enumeră doar videoclipurile pe care le-ați salvat sau le-ați favorizat. Când lucrările vor fi finalizate, toate videoclipurile care se află în prezent aici vor fi migrate într-o listă de redare "Favorite". - Search bar placeholder: Caută în Listă De Redare + Search bar placeholder: Căutați liste de redare Empty Search Message: Nu sunt videoclipuri pentru căutarea ta + Move Video Down: Mutați video în jos + Enable Quick Bookmark With This Playlist: Activați marcajul rapid cu această listă + de redare + Sort By: + Sort By: Sortează după + NameDescending: Z-A + LatestCreatedFirst: Creat recent + NameAscending: A-Z + LatestUpdatedFirst: Actualizat recent + EarliestCreatedFirst: Cel mai devreme creat + This playlist currently has no videos.: Această listă de redare nu are în prezent + niciun videoclip. + You have no playlists. Click on the create new playlist button to create a new one.: Nu + aveți liste de redare. Faceți clic pe butonul de creare a unei noi liste de redare + pentru a crea una nouă. + Playlists with Matching Videos: Liste de redare cu videoclipuri corespunzătoare + AddVideoPrompt: + Select a playlist to add your N videos to: Selectați o listă de redare la care + să adăugați videoclipul dvs. | Selectați o listă de redare la care să adăugați + videoclipurile {videoCount} + Cancel: Anulare + Edit Playlist Info: Editați informațiile despre lista de redare + Copy Playlist: Copiați lista de redare + Remove Watched Videos: Eliminați videoclipurile vizionate + Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Sunteți + sigur că doriți să eliminați toate videoclipurile vizionate din această listă + de redare? Acest lucru nu poate fi anulat. + Create New Playlist: Creați o nouă listă de redare + Add to Playlist: Adăugați la lista de redare + Add to Favorites: Adaugă la {playlistName} + Remove from Favorites: Eliminați din {playlistName} + Move Video Up: Mutați video în sus + Remove from Playlist: Eliminați din lista de redare + Playlist Name: Numele listei de redare + Playlist Description: Descrierea listei de redare + Save Changes: Salvați modificările + Disable Quick Bookmark: Dezactivați marcajul rapid + Delete Playlist: Ștergeți lista de redare + Are you sure you want to delete this playlist? This cannot be undone: Sunteți sigur + că doriți să ștergeți această listă de redare? Acest lucru nu poate fi anulat. History: # On History Page History: 'Istoric' @@ -405,8 +445,8 @@ Settings: Hide Live Streams: Ascunde stream-urile live Hide Sharing Actions: Ascunde butoanele de sharing Hide Chapters: Ascundeți capitolele - Display Titles Without Excessive Capitalisation: Afișați titluri fără majuscule - excesive + Display Titles Without Excessive Capitalisation: Afișați titlurile fără majuscule + și semne de punctuație excesive Sections: Subscriptions Page: Pagina de abonamente Side Bar: Bară laterală @@ -422,7 +462,7 @@ Settings: Hide Channel Community: Ascunde comunitatea canalului Hide Channel Shorts: Ascundeți canalul Shorts Hide Featured Channels: Ascundeți canalele recomandate - Hide Channels Placeholder: Numele canalului sau ID-ul + Hide Channels Placeholder: ID-ul canalului Hide Channel Playlists: Ascunde playlisturile canalului Hide Upcoming Premieres: Ascundeți premierele viitoare Blur Thumbnails: Estomparea miniaturilor From 3d226b4ec6ec4a53531dd2cedb337c65382c435d Mon Sep 17 00:00:00 2001 From: NEXI Date: Wed, 10 Apr 2024 21:27:04 +0000 Subject: [PATCH 03/19] Translated using Weblate (Serbian) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sr/ --- static/locales/sr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/sr.yaml b/static/locales/sr.yaml index cc5dcb1b8846a..291aac79c5946 100644 --- a/static/locales/sr.yaml +++ b/static/locales/sr.yaml @@ -1116,3 +1116,5 @@ Close Banner: Затвори банер Age Restricted: This channel is age restricted: Овај канал је ограничен према узрасту This video is age restricted: Овај видео снимак је ограничен према узрасту +Display Label: '{label}: {value}' +checkmark: ✓ From 1dde53327018e163ea51050ca448f26195f8b125 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 11 Apr 2024 04:24:25 -0400 Subject: [PATCH 04/19] Use more generic icon for `Quick bookmark` feature (#4885) * Use `bookmark` icon for `Quick bookmark` feature * Make bookmark icon primary colour * Remove colour from fa-bookmark * Make thumbnail icons fully visible instead of only 85% visible * Make thumbnail icons very slightly larger * Revert size change of bookmark icon and playlist add icon * Revert `$thumbnail-overlay-opacity` and change icon opacity directly --- src/renderer/components/ft-list-video/ft-list-video.vue | 2 +- src/renderer/components/watch-video-info/watch-video-info.vue | 2 +- src/renderer/main.js | 2 -- src/renderer/scss-partials/_ft-list-item.scss | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/renderer/components/ft-list-video/ft-list-video.vue b/src/renderer/components/ft-list-video/ft-list-video.vue index 391ff3c1f2bbe..868f90e0cbeb9 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.vue +++ b/src/renderer/components/ft-list-video/ft-list-video.vue @@ -58,7 +58,7 @@ es -> en-US + es_AR: ['es'], + // es-MX -> es -> en-US + 'es-MX': ['es'], + // pt-BR -> pt -> en-US + 'pt-BR': ['pt'], + // pt-PT -> pt -> en-US + 'pt-PT': ['pt'], + // any -> en-US + default: ['en-US'], + } }) export async function loadLocale(locale) { @@ -18,6 +31,7 @@ export async function loadLocale(locale) { } if (!activeLocales.includes(locale)) { console.error(`Unable to load unknown locale: "${locale}"`) + return } // locales are only compressed in our production Electron builds @@ -45,6 +59,4 @@ export async function loadLocale(locale) { } } -loadLocale('en-US') - export default i18n diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index fcd191079f188..1f2fc9ee74ba2 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -352,7 +352,34 @@ const stateWithSideEffects = { } } - await loadLocale(targetLocale) + const loadPromises = [] + + if (targetLocale !== defaultLocale) { + // "en-US" is used as a fallback for missing strings in other locales + loadPromises.push( + loadLocale(defaultLocale) + ) + } + + // "es" is used as a fallback for "es_AR" and "es-MX" + if (targetLocale === 'es_AR' || targetLocale === 'es-MX') { + loadPromises.push( + loadLocale('es') + ) + } + + // "pt" is used as a fallback for "pt-PT" and "pt-BR" + if (targetLocale === 'pt-PT' || targetLocale === 'pt-BR') { + loadPromises.push( + loadLocale('pt') + ) + } + + loadPromises.push( + loadLocale(targetLocale) + ) + + await Promise.allSettled(loadPromises) i18n.locale = targetLocale await dispatch('getRegionData', { From 2d51419797a8bd990f8165524bc5083e60e39ab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:12:57 +0000 Subject: [PATCH 06/19] Bump tar from 6.1.15 to 6.2.1 (#4926) Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.15 to 6.2.1. - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v6.1.15...v6.2.1) --- updated-dependencies: - dependency-name: tar dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e18bfbc4753f2..37d3da3c2671f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8204,9 +8204,9 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^6.1.12: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" From d6e5439b671cf25f5a0ed2bc39b974cb406c0544 Mon Sep 17 00:00:00 2001 From: Jason <84899178+jasonhenriquez@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:46:33 +0000 Subject: [PATCH 07/19] Add back author search in video playlist searching (#4919) * Add back author search in video playlist searching Reuses previous paradigm (the paradigm currently in place in History.js). This was the pre-existing behavior before the Playlist PR. See https://github.com/FreeTubeApp/FreeTube/blob/5c8d49bf51dde8ffd8c8d291dce3e5ff27b0d9fb/src/renderer/views/UserPlaylists/UserPlaylists.js#L98-L103. * Update title/author search handling to not fail if only one of the base values is invalid * Add author-searching to 'Find playlist with video' results --- .../ft-playlist-add-video-prompt.js | 2 +- src/renderer/views/History/History.js | 10 ++++++---- src/renderer/views/Playlist/Playlist.js | 8 +++++++- src/renderer/views/UserPlaylists/UserPlaylists.js | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js index 4f5a944e4764e..ed9c0fbf10f99 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.js @@ -119,7 +119,7 @@ export default defineComponent({ if (typeof (playlist.playlistName) !== 'string') { return false } if (this.doSearchPlaylistsWithMatchingVideos) { - if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.processedQuery))) { + if (playlist.videos.some((v) => v.author.toLowerCase().includes(this.processedQuery) || v.title.toLowerCase().includes(this.processedQuery))) { return true } } diff --git a/src/renderer/views/History/History.js b/src/renderer/views/History/History.js index ffa871ea23886..0a494d7c51918 100644 --- a/src/renderer/views/History/History.js +++ b/src/renderer/views/History/History.js @@ -93,11 +93,13 @@ export default defineComponent({ } else { const lowerCaseQuery = this.query.toLowerCase() const filteredQuery = this.historyCacheSorted.filter((video) => { - if (typeof (video.title) !== 'string' || typeof (video.author) !== 'string') { - return false - } else { - return video.title.toLowerCase().includes(lowerCaseQuery) || video.author.toLowerCase().includes(lowerCaseQuery) + if (typeof (video.title) === 'string' && video.title.toLowerCase().includes(lowerCaseQuery)) { + return true + } else if (typeof (video.author) === 'string' && video.author.toLowerCase().includes(lowerCaseQuery)) { + return true } + + return false }).sort((a, b) => { return b.timeWatched - a.timeWatched }) diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 936f96abebbdb..73183f381b408 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -142,7 +142,13 @@ export default defineComponent({ if (this.processedVideoSearchQuery === '') { return this.playlistItems } return this.playlistItems.filter((v) => { - return v.title.toLowerCase().includes(this.processedVideoSearchQuery) + if (typeof (v.title) === 'string' && v.title.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } else if (typeof (v.author) === 'string' && v.author.toLowerCase().includes(this.processedVideoSearchQuery)) { + return true + } + + return false }) }, visiblePlaylistItems: function () { diff --git a/src/renderer/views/UserPlaylists/UserPlaylists.js b/src/renderer/views/UserPlaylists/UserPlaylists.js index e4d7f3f2888e3..1be2a9bdc0e8a 100644 --- a/src/renderer/views/UserPlaylists/UserPlaylists.js +++ b/src/renderer/views/UserPlaylists/UserPlaylists.js @@ -223,7 +223,7 @@ export default defineComponent({ if (typeof (playlist.playlistName) !== 'string') { return false } if (this.doSearchPlaylistsWithMatchingVideos) { - if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.lowerCaseQuery))) { + if (playlist.videos.some((v) => v.author.toLowerCase().includes(this.lowerCaseQuery) || v.title.toLowerCase().includes(this.lowerCaseQuery))) { return true } } From f5f87d3c32d4cfbcf36e064a09d11f5133e72790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 11 Apr 2024 13:16:55 +0000 Subject: [PATCH 08/19] Translated using Weblate (Estonian) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/ --- static/locales/et.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/et.yaml b/static/locales/et.yaml index 166aa79e3956e..f0fe96b12ca6b 100644 --- a/static/locales/et.yaml +++ b/static/locales/et.yaml @@ -1123,3 +1123,5 @@ Age Restricted: This channel is age restricted: Kanali vaatamisel on vanusepiirang This video is age restricted: Video vaatamisel on vanusepiirang Close Banner: Sulge rekaampilt +checkmark: ✓ +Display Label: '{label}: {value}' From 3756dfc6650557bb1e1da04ab3f35b5d76268a62 Mon Sep 17 00:00:00 2001 From: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:53:12 -0400 Subject: [PATCH 09/19] Add `pack` to linter workflow so it's easier to prevent errors when merging some PRs (#4927) --- .github/workflows/linter.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index a213b4b1c6058..a10f2f3e2d98a 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -25,3 +25,5 @@ jobs: cache: "yarn" - run: yarn run ci - run: yarn run lint + # let's verify that webpack is able to package the project + - run: yarn run pack From 559671fd24e5e1a4420e3bbb97c8ab2da6f43f1b Mon Sep 17 00:00:00 2001 From: WaldiS Date: Thu, 11 Apr 2024 18:35:54 +0000 Subject: [PATCH 10/19] Translated using Weblate (Polish) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/ --- static/locales/pl.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/pl.yaml b/static/locales/pl.yaml index c627b6ae78e5d..355170d1da89c 100644 --- a/static/locales/pl.yaml +++ b/static/locales/pl.yaml @@ -1220,3 +1220,5 @@ Age Restricted: This video is age restricted: Ten film ma ograniczenie wiekowe This channel is age restricted: Ten kanał ma ograniczenie wiekowe Close Banner: Zamknij Baner +checkmark: ✓ +Display Label: '{label}: {value}' From af2913592ee0e989dba8f5909ff7909f9bc42516 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Fri, 12 Apr 2024 08:12:50 +0200 Subject: [PATCH 11/19] Add SUPPORTS_LOCAL_API build flag (#4931) --- _scripts/webpack.renderer.config.js | 1 + _scripts/webpack.web.config.js | 1 + .../components/data-settings/data-settings.js | 2 +- .../ft-community-post/ft-community-post.js | 4 +-- .../ft-video-player/ft-video-player.js | 2 +- .../general-settings/general-settings.js | 30 ++++++++++++++----- .../subscriptions-community.js | 4 +-- .../subscriptions-live/subscriptions-live.js | 6 ++-- .../subscriptions-shorts.js | 4 +-- .../subscriptions-videos.js | 6 ++-- src/renderer/components/top-nav/top-nav.js | 2 +- .../watch-video-comments.js | 8 ++--- .../watch-video-live-chat.js | 2 +- .../watch-video-playlist.js | 8 ++--- src/renderer/helpers/api/invidious.js | 6 ++-- src/renderer/helpers/api/local.js | 10 +++++-- src/renderer/helpers/channels.js | 6 ++-- src/renderer/store/modules/invidious.js | 4 +-- src/renderer/store/modules/settings.js | 6 ++-- src/renderer/views/Channel/Channel.js | 24 +++++++-------- src/renderer/views/Hashtag/Hashtag.js | 2 +- src/renderer/views/Playlist/Playlist.js | 2 +- src/renderer/views/Search/Search.js | 2 +- src/renderer/views/Trending/Trending.js | 4 +-- src/renderer/views/Watch/Watch.js | 12 ++++---- 25 files changed, 89 insertions(+), 69 deletions(-) diff --git a/_scripts/webpack.renderer.config.js b/_scripts/webpack.renderer.config.js index 0996d51eda1a2..18d778c895a23 100644 --- a/_scripts/webpack.renderer.config.js +++ b/_scripts/webpack.renderer.config.js @@ -119,6 +119,7 @@ const config = { new webpack.DefinePlugin({ 'process.env.IS_ELECTRON': true, 'process.env.IS_ELECTRON_MAIN': false, + 'process.env.SUPPORTS_LOCAL_API': true, 'process.env.LOCALE_NAMES': JSON.stringify(processLocalesPlugin.localeNames), 'process.env.GEOLOCATION_NAMES': JSON.stringify(readdirSync(path.join(__dirname, '..', 'static', 'geolocations')).map(filename => filename.replace('.json', ''))), 'process.env.SWIPER_VERSION': `'${swiperVersion}'` diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index 91035d4cd6ca6..0badc63a748d9 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -116,6 +116,7 @@ const config = { new webpack.DefinePlugin({ 'process.env.IS_ELECTRON': false, 'process.env.IS_ELECTRON_MAIN': false, + 'process.env.SUPPORTS_LOCAL_API': false, 'process.env.SWIPER_VERSION': `'${swiperVersion}'`, // video.js' vhs-utils supports both atob() in web browsers and Buffer in node diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index 57b46847cae87..9cda4bad1504c 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -1152,7 +1152,7 @@ export default defineComponent({ copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendFallback && this.backendPreference === 'invidious') { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback && this.backendPreference === 'invidious') { showToast(this.$t('Falling back to Local API')) resolve(this.getChannelInfoLocal(channelId)) } else { diff --git a/src/renderer/components/ft-community-post/ft-community-post.js b/src/renderer/components/ft-community-post/ft-community-post.js index 6be036209b80e..51fa39bb1afed 100644 --- a/src/renderer/components/ft-community-post/ft-community-post.js +++ b/src/renderer/components/ft-community-post/ft-community-post.js @@ -95,7 +95,7 @@ export default defineComponent({ this.postText = 'Shared post' this.type = 'text' let authorThumbnails = ['', 'https://yt3.ggpht.com/ytc/AAUvwnjm-0qglHJkAHqLFsCQQO97G7cCNDuDLldsrn25Lg=s88-c-k-c0x00ffffff-no-rj'] - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { authorThumbnails = authorThumbnails.map(thumbnail => { thumbnail.url = youtubeImageUrlToInvidious(thumbnail.url) return thumbnail @@ -106,7 +106,7 @@ export default defineComponent({ } this.postText = autolinker.link(this.data.postText) const authorThumbnails = deepCopy(this.data.authorThumbnails) - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { authorThumbnails.forEach(thumbnail => { thumbnail.url = youtubeImageUrlToInvidious(thumbnail.url) }) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 1e7685caca99e..afe83aff3cce6 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -1314,7 +1314,7 @@ export default defineComponent({ this.useDash = false this.useHls = false - this.activeSourceList = (this.proxyVideos || !process.env.IS_ELECTRON) + this.activeSourceList = (this.proxyVideos || !process.env.SUPPORTS_LOCAL_API) // use map here to return slightly different list without modifying original ? this.sourceList.map((source) => { return { diff --git a/src/renderer/components/general-settings/general-settings.js b/src/renderer/components/general-settings/general-settings.js index a2b7d3e7b29dc..5ccf21a47b9f0 100644 --- a/src/renderer/components/general-settings/general-settings.js +++ b/src/renderer/components/general-settings/general-settings.js @@ -24,10 +24,14 @@ export default defineComponent({ }, data: function () { return { - backendValues: [ - 'invidious', - 'local' - ], + backendValues: process.env.SUPPORTS_LOCAL_API + ? [ + 'invidious', + 'local' + ] + : [ + 'invidious' + ], viewTypeValues: [ 'grid', 'list' @@ -99,6 +103,10 @@ export default defineComponent({ return this.defaultPages.map((route) => route.path.substring(1)) }, backendPreference: function () { + if (!process.env.SUPPORTS_LOCAL_API && this.$store.getters.getBackendPreference === 'local') { + this.handlePreferredApiBackend('invidious') + } + return this.$store.getters.getBackendPreference }, landingPage: function () { @@ -149,10 +157,16 @@ export default defineComponent({ }, backendNames: function () { - return [ - this.$t('Settings.General Settings.Preferred API Backend.Invidious API'), - this.$t('Settings.General Settings.Preferred API Backend.Local API') - ] + if (process.env.SUPPORTS_LOCAL_API) { + return [ + this.$t('Settings.General Settings.Preferred API Backend.Invidious API'), + this.$t('Settings.General Settings.Preferred API Backend.Local API') + ] + } else { + return [ + this.$t('Settings.General Settings.Preferred API Backend.Invidious API') + ] + } }, viewTypeNames: function () { diff --git a/src/renderer/components/subscriptions-community/subscriptions-community.js b/src/renderer/components/subscriptions-community/subscriptions-community.js index d3042f91908da..1c17cf6f5af17 100644 --- a/src/renderer/components/subscriptions-community/subscriptions-community.js +++ b/src/renderer/components/subscriptions-community/subscriptions-community.js @@ -125,7 +125,7 @@ export default defineComponent({ const postListFromRemote = (await Promise.all(channelsToLoadFromRemote.map(async (channel) => { let posts = [] - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { posts = await this.getChannelPostsInvidious(channel) } else { posts = await this.getChannelPostsLocal(channel) @@ -229,7 +229,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) resolve(this.getChannelPostsLocal(channel)) } else { diff --git a/src/renderer/components/subscriptions-live/subscriptions-live.js b/src/renderer/components/subscriptions-live/subscriptions-live.js index 2877fe4d17894..e13daf3ce4e5e 100644 --- a/src/renderer/components/subscriptions-live/subscriptions-live.js +++ b/src/renderer/components/subscriptions-live/subscriptions-live.js @@ -135,7 +135,7 @@ export default defineComponent({ let videos = [] let name, thumbnailUrl - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { if (useRss) { ({ videos, name, thumbnailUrl } = await this.getChannelLiveInvidiousRSS(channel)) } else { @@ -315,7 +315,7 @@ export default defineComponent({ resolve(this.getChannelLiveInvidiousRSS(channel, failedAttempts + 1)) break case 1: - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { showToast(this.$t('Falling back to Local API')) resolve(this.getChannelLiveLocal(channel, failedAttempts + 1)) } else { @@ -360,7 +360,7 @@ export default defineComponent({ case 0: return this.getChannelLiveInvidious(channel, failedAttempts + 1) case 1: - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { showToast(this.$t('Falling back to Local API')) return this.getChannelLiveLocalRSS(channel, failedAttempts + 1) } else { diff --git a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js index 9a3c45c3c35f7..062da5a21d6be 100644 --- a/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js +++ b/src/renderer/components/subscriptions-shorts/subscriptions-shorts.js @@ -120,7 +120,7 @@ export default defineComponent({ let videos = [] let name - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { ({ videos, name } = await this.getChannelShortsInvidious(channel)) } else { ({ videos, name } = await this.getChannelShortsLocal(channel)) @@ -234,7 +234,7 @@ export default defineComponent({ }) switch (failedAttempts) { case 0: - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { showToast(this.$t('Falling back to Local API')) return this.getChannelShortsLocal(channel, failedAttempts + 1) } else { diff --git a/src/renderer/components/subscriptions-videos/subscriptions-videos.js b/src/renderer/components/subscriptions-videos/subscriptions-videos.js index 11ea86f6b3ac9..599fbb5f31d8c 100644 --- a/src/renderer/components/subscriptions-videos/subscriptions-videos.js +++ b/src/renderer/components/subscriptions-videos/subscriptions-videos.js @@ -135,7 +135,7 @@ export default defineComponent({ let videos = [] let name, thumbnailUrl - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { if (useRss) { ({ videos, name, thumbnailUrl } = await this.getChannelVideosInvidiousRSS(channel)) } else { @@ -312,7 +312,7 @@ export default defineComponent({ resolve(this.getChannelVideosInvidiousRSS(channel, failedAttempts + 1)) break case 1: - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { showToast(this.$t('Falling back to Local API')) resolve(this.getChannelVideosLocalScraper(channel, failedAttempts + 1)) } else { @@ -358,7 +358,7 @@ export default defineComponent({ case 0: return this.getChannelVideosInvidiousScraper(channel, failedAttempts + 1) case 1: - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { showToast(this.$t('Falling back to Local API')) return this.getChannelVideosLocalRSS(channel, failedAttempts + 1) } else { diff --git a/src/renderer/components/top-nav/top-nav.js b/src/renderer/components/top-nav/top-nav.js index 00edb43ecb7b0..f6b02d609ae29 100644 --- a/src/renderer/components/top-nav/top-nav.js +++ b/src/renderer/components/top-nav/top-nav.js @@ -284,7 +284,7 @@ export default defineComponent({ this.searchSuggestionsDataList = results.suggestions }).catch((err) => { console.error(err) - if (process.env.IS_ELECTRON && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback) { console.error( 'Error gettings search suggestions. Falling back to Local API' ) diff --git a/src/renderer/components/watch-video-comments/watch-video-comments.js b/src/renderer/components/watch-video-comments/watch-video-comments.js index deabbcd6dd1b3..dd95f037a982f 100644 --- a/src/renderer/components/watch-video-comments/watch-video-comments.js +++ b/src/renderer/components/watch-video-comments/watch-video-comments.js @@ -151,7 +151,7 @@ export default defineComponent({ getCommentData: function () { this.isLoading = true - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getCommentDataInvidious() } else { this.getCommentDataLocal() @@ -162,7 +162,7 @@ export default defineComponent({ if (this.commentData.length === 0 || this.nextPageToken === null || typeof this.nextPageToken === 'undefined') { showToast(this.$t('Comments.There are no more comments for this video')) } else { - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getCommentDataInvidious() } else { this.getCommentDataLocal(true) @@ -179,7 +179,7 @@ export default defineComponent({ }, getCommentReplies: function (index) { - if (process.env.IS_ELECTRON) { + if (process.env.SUPPORTS_LOCAL_API) { switch (this.commentData[index].dataType) { case 'local': this.getCommentRepliesLocal(index) @@ -292,7 +292,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendFallback && this.backendPreference === 'invidious') { + if (process.env.SUPPORTS_LOCAL_API && this.backendFallback && this.backendPreference === 'invidious') { showToast(this.$t('Falling back to Local API')) this.getCommentDataLocal() } else { diff --git a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js index d225a6e3b128d..b1484c7573597 100644 --- a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js +++ b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js @@ -94,7 +94,7 @@ export default defineComponent({ this.liveChatInstance = null }, created: function () { - if (!process.env.IS_ELECTRON) { + if (!process.env.SUPPORTS_LOCAL_API) { this.hasError = true this.errorMessage = this.$t('Video["Live Chat is currently not supported in this build."]') this.isLoading = false diff --git a/src/renderer/components/watch-video-playlist/watch-video-playlist.js b/src/renderer/components/watch-video-playlist/watch-video-playlist.js index 1bb4136275b1b..2689326bf9f36 100644 --- a/src/renderer/components/watch-video-playlist/watch-video-playlist.js +++ b/src/renderer/components/watch-video-playlist/watch-video-playlist.js @@ -210,7 +210,7 @@ export default defineComponent({ }, playlistId: function (newVal, oldVal) { if (oldVal !== newVal) { - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getPlaylistInformationInvidious() } else { this.getPlaylistInformationLocal() @@ -249,7 +249,7 @@ export default defineComponent({ if (this.selectedUserPlaylist != null) { this.parseUserPlaylist(this.selectedUserPlaylist) - } else if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + } else if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getPlaylistInformationInvidious() } else { this.getPlaylistInformationLocal() @@ -386,7 +386,7 @@ export default defineComponent({ this.channelName = cachedPlaylist.channelName this.channelId = cachedPlaylist.channelId - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious' || cachedPlaylist.continuationData === null) { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious' || cachedPlaylist.continuationData === null) { this.playlistItems = cachedPlaylist.items } else { const videos = cachedPlaylist.items @@ -462,7 +462,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getPlaylistInformationLocal() } else { diff --git a/src/renderer/helpers/api/invidious.js b/src/renderer/helpers/api/invidious.js index b50c54ef41fb2..2d5c9b7263d2c 100644 --- a/src/renderer/helpers/api/invidious.js +++ b/src/renderer/helpers/api/invidious.js @@ -321,10 +321,10 @@ export function filterInvidiousFormats(formats, allowAv1 = false) { // Which is caused by Invidious API limitation on AV1 formats (see related issues) // Commented code to be restored after Invidious issue fixed // - // As we generate our own DASH manifest (using YouTube.js) for multiple audio track support in Electron, - // we can allow AV1 in that situation. If we aren't in electron, + // As we generate our own DASH manifest (using YouTube.js) for multiple audio track support when the local API is supported, + // we can allow AV1 in that situation. When the local API isn't supported, // we still can't use them until Invidious fixes the issue on their side - if (process.env.IS_ELECTRON && allowAv1 && av1Formats.length > 0) { + if (process.env.SUPPORTS_LOCAL_API && allowAv1 && av1Formats.length > 0) { return [...audioFormats, ...av1Formats] } diff --git a/src/renderer/helpers/api/local.js b/src/renderer/helpers/api/local.js index 7fbc5b2291b1b..7b9947441fff5 100644 --- a/src/renderer/helpers/api/local.js +++ b/src/renderer/helpers/api/local.js @@ -1,4 +1,4 @@ -import { ClientType, Endpoints, Innertube, Misc, Utils, YT } from 'youtubei.js' +import { ClientType, Endpoints, Innertube, Misc, UniversalCache, Utils, YT } from 'youtubei.js' import Autolinker from 'autolinker' import { join } from 'path' @@ -39,8 +39,12 @@ const TRACKING_PARAM_NAMES = [ async function createInnertube({ withPlayer = false, location = undefined, safetyMode = false, clientType = undefined, generateSessionLocally = true } = {}) { let cache if (withPlayer) { - const userData = await getUserDataPath() - cache = new PlayerCache(join(userData, 'player_cache')) + if (process.env.IS_ELECTRON) { + const userData = await getUserDataPath() + cache = new PlayerCache(join(userData, 'player_cache')) + } else { + cache = new UniversalCache(false) + } } return await Innertube.create({ diff --git a/src/renderer/helpers/channels.js b/src/renderer/helpers/channels.js index 888c1317858cc..e343bdbac24ab 100644 --- a/src/renderer/helpers/channels.js +++ b/src/renderer/helpers/channels.js @@ -11,7 +11,7 @@ import { getLocalChannel } from './api/local' */ async function findChannelById(id, backendOptions) { try { - if (!process.env.IS_ELECTRON || backendOptions.preference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || backendOptions.preference === 'invidious') { return await invidiousGetChannelInfo(id) } else { return await getLocalChannel(id) @@ -21,7 +21,7 @@ async function findChannelById(id, backendOptions) { if (err.message && err.message === 'This channel does not exist.') { return { invalid: true } } - if (process.env.IS_ELECTRON && backendOptions.fallback) { + if (process.env.SUPPORTS_LOCAL_API && backendOptions.fallback) { if (backendOptions.preference === 'invidious') { return await getLocalChannel(id) } @@ -46,7 +46,7 @@ export async function findChannelTagInfo(id, backendOptions) { if (!checkYoutubeChannelId(id)) return { invalidId: true } try { const channel = await findChannelById(id, backendOptions) - if (!process.env.IS_ELECTRON || backendOptions.preference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || backendOptions.preference === 'invidious') { if (channel.invalid) return { invalidId: true } return { preferredName: channel.author, diff --git a/src/renderer/store/modules/invidious.js b/src/renderer/store/modules/invidious.js index b7b9aa41431f3..90cdc1f9006ba 100644 --- a/src/renderer/store/modules/invidious.js +++ b/src/renderer/store/modules/invidious.js @@ -28,7 +28,7 @@ const actions = { return !(instance[0].includes('.onion') || instance[0].includes('.i2p') || !instance[1].api || - (!process.env.IS_ELECTRON && !instance[1].cors)) + (!process.env.SUPPORTS_LOCAL_API && !instance[1].cors)) }).map((instance) => { return instance[1].uri.replace(/\/$/, '') }) @@ -50,7 +50,7 @@ const actions = { console.warn('reading static file for invidious instances') const fileData = process.env.IS_ELECTRON ? await fs.readFile(filePath, 'utf8') : await (await fetch(createWebURL(filePath))).text() instances = JSON.parse(fileData).filter(e => { - return process.env.IS_ELECTRON || e.cors + return process.env.SUPPORTS_LOCAL_API || e.cors }).map(e => { return e.url }) diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index 1f2fc9ee74ba2..7aa40616c2f12 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -165,8 +165,8 @@ const state = { allSettingsSectionsExpandedByDefault: false, autoplayPlaylists: true, autoplayVideos: true, - backendFallback: process.env.IS_ELECTRON, - backendPreference: !process.env.IS_ELECTRON ? 'invidious' : 'local', + backendFallback: process.env.SUPPORTS_LOCAL_API, + backendPreference: !process.env.SUPPORTS_LOCAL_API ? 'invidious' : 'local', barColor: false, checkForBlogPosts: true, checkForUpdates: true, @@ -237,7 +237,7 @@ const state = { proxyHostname: '127.0.0.1', proxyPort: '9050', proxyProtocol: 'socks5', - proxyVideos: !process.env.IS_ELECTRON, + proxyVideos: !process.env.SUPPORTS_LOCAL_API, region: 'US', rememberHistory: true, saveWatchedProgress: true, diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 3ed47caa034f6..5f17b1920e264 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -351,7 +351,7 @@ export default defineComponent({ this.errorMessage = '' // Re-enable auto refresh on sort value change AFTER update done - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getChannelInfoInvidious() this.autoRefreshOnSortByChangeEnabled = true } else { @@ -449,7 +449,7 @@ export default defineComponent({ } // Enable auto refresh on sort value change AFTER initial update done - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getChannelInfoInvidious() this.autoRefreshOnSortByChangeEnabled = true } else { @@ -462,7 +462,7 @@ export default defineComponent({ resolveChannelUrl: async function (url, tab = undefined) { let id - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { id = await invidiousGetChannelId(url) } else { id = await getLocalChannelId(url) @@ -1051,7 +1051,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getChannelLocal() } else { @@ -1329,7 +1329,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) if (!this.channelInstance) { this.channelInstance = await getLocalChannel(this.id) @@ -1370,7 +1370,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getChannelLocal() } else { @@ -1449,7 +1449,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) if (!this.channelInstance) { this.channelInstance = await getLocalChannel(this.id) @@ -1483,7 +1483,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getChannelLocal() } else { @@ -1562,7 +1562,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) if (!this.channelInstance) { this.channelInstance = await getLocalChannel(this.id) @@ -1596,7 +1596,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getChannelLocal() } else { @@ -1716,7 +1716,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) if (!this.channelInstance) { this.channelInstance = await getLocalChannel(this.id) @@ -1939,7 +1939,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.searchChannelLocal() } else { diff --git a/src/renderer/views/Hashtag/Hashtag.js b/src/renderer/views/Hashtag/Hashtag.js index b0edbff84af1c..581b34f88c4ea 100644 --- a/src/renderer/views/Hashtag/Hashtag.js +++ b/src/renderer/views/Hashtag/Hashtag.js @@ -85,7 +85,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${error}`, 10000, () => { copyToClipboard(error) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.resetData() this.getLocalHashtag(hashtag) diff --git a/src/renderer/views/Playlist/Playlist.js b/src/renderer/views/Playlist/Playlist.js index 73183f381b408..2dde53d0c5c61 100644 --- a/src/renderer/views/Playlist/Playlist.js +++ b/src/renderer/views/Playlist/Playlist.js @@ -313,7 +313,7 @@ export default defineComponent({ this.isLoading = false }).catch((err) => { console.error(err) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { console.warn('Error getting data with Invidious, falling back to local backend') this.getPlaylistLocal() } else { diff --git a/src/renderer/views/Search/Search.js b/src/renderer/views/Search/Search.js index 2f860c156b84c..487e0a9046f86 100644 --- a/src/renderer/views/Search/Search.js +++ b/src/renderer/views/Search/Search.js @@ -246,7 +246,7 @@ export default defineComponent({ showToast(`${errorMessage}: ${err}`, 10000, () => { copyToClipboard(err) }) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.performSearchLocal(payload) } else { diff --git a/src/renderer/views/Trending/Trending.js b/src/renderer/views/Trending/Trending.js index d239a5a6de467..355491b93f9db 100644 --- a/src/renderer/views/Trending/Trending.js +++ b/src/renderer/views/Trending/Trending.js @@ -85,7 +85,7 @@ export default defineComponent({ this.$store.commit('clearTrendingCache') } - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getTrendingInfoInvidious() } else { this.getTrendingInfoLocal() @@ -161,7 +161,7 @@ export default defineComponent({ copyToClipboard(err.responseText) }) - if (process.env.IS_ELECTRON && (this.backendPreference === 'invidious' && this.backendFallback)) { + if (process.env.SUPPORTS_LOCAL_API && (this.backendPreference === 'invidious' && this.backendFallback)) { showToast(this.$t('Falling back to Local API')) this.getTrendingInfoLocal() } else { diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 17d3443b7ca69..ceec923690fd4 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -289,7 +289,7 @@ export default defineComponent({ this.checkIfPlaylist() this.checkIfTimestamp() - if (!process.env.IS_ELECTRON || this.backendPreference === 'invidious') { + if (!process.env.SUPPORTS_LOCAL_API || this.backendPreference === 'invidious') { this.getVideoInformationInvidious() } else { this.getVideoInformationLocal() @@ -870,8 +870,8 @@ export default defineComponent({ this.audioTracks = [] this.dashSrc = await this.createInvidiousDashManifest() - if (process.env.IS_ELECTRON && this.audioTracks.length > 0) { - // when we are in Electron and the video has multiple audio tracks, + if (process.env.SUPPORTS_LOCAL_API && this.audioTracks.length > 0) { + // when the local API is supported and the video has multiple audio tracks, // we populate the list inside createInvidiousDashManifest // as we need to work out the different audio tracks for the DASH manifest anyway this.audioSourceList = this.audioTracks.find(track => track.isDefault).sourceList @@ -908,7 +908,7 @@ export default defineComponent({ copyToClipboard(err.responseText) }) console.error(err) - if (process.env.IS_ELECTRON && this.backendPreference === 'invidious' && this.backendFallback) { + if (process.env.SUPPORTS_LOCAL_API && this.backendPreference === 'invidious' && this.backendFallback) { showToast(this.$t('Falling back to Local API')) this.getVideoInformationLocal() } else { @@ -1233,7 +1233,7 @@ export default defineComponent({ copyToClipboard(err) }) console.error(err) - if (!process.env.IS_ELECTRON || (this.backendPreference === 'local' && this.backendFallback)) { + if (!process.env.SUPPORTS_LOCAL_API || (this.backendPreference === 'local' && this.backendFallback)) { showToast(this.$t('Falling back to Invidious API')) this.getVideoInformationInvidious() } @@ -1471,7 +1471,7 @@ export default defineComponent({ // If we are in Electron, // we can use YouTube.js' DASH manifest generator to generate the manifest. // Using YouTube.js' gives us support for multiple audio tracks (currently not supported by Invidious) - if (process.env.IS_ELECTRON) { + if (process.env.SUPPORTS_LOCAL_API) { // Invidious' API response doesn't include the height and width (and fps and qualityLabel for AV1) of video streams // so we need to extract them from Invidious' manifest const response = await fetch(url) From 5aba52beac12b6308f1e3d0ac2d379f39a3af510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kordovsk=C3=BD?= Date: Fri, 12 Apr 2024 17:25:49 +0200 Subject: [PATCH 12/19] SVG assets (#4898) * SVG assets * Added hi-res version of Windows icon * Added back PNG icon for Electron app --- _icons/icon.ico | Bin 4875 -> 492059 bytes _icons/iconBlack.png | Bin 1794 -> 0 bytes _icons/iconBlack.svg | 4 +- _icons/iconBlackSmall.png | Bin 352 -> 0 bytes _icons/iconBlackSmall.svg | 3 + _icons/iconCatppuccinMochaDarkSmall.png | Bin 425 -> 0 bytes _icons/iconCatppuccinMochaDarkSmall.svg | 4 + _icons/iconCatppuccinMochaLightSmall.png | Bin 426 -> 0 bytes _icons/iconCatppuccinMochaLightSmall.svg | 4 + _icons/iconColor.png | Bin 5020 -> 10124 bytes _icons/iconColor.svg | 99 +---------------------- _icons/iconColorSmall.png | Bin 433 -> 0 bytes _icons/iconColorSmall.svg | 4 + _icons/iconDraculaDarkSmall.png | Bin 356 -> 0 bytes _icons/iconDraculaDarkSmall.svg | 4 + _icons/iconDraculaLightSmall.png | Bin 353 -> 0 bytes _icons/iconDraculaLightSmall.svg | 4 + _icons/iconNordicLightSmall.png | Bin 356 -> 0 bytes _icons/iconNordicLightSmall.svg | 4 + _icons/iconWhite.png | Bin 1825 -> 0 bytes _icons/iconWhite.svg | 98 +--------------------- _icons/iconWhiteSmall.png | Bin 287 -> 0 bytes _icons/iconWhiteSmall.svg | 3 + _icons/textBlack.png | Bin 4383 -> 0 bytes _icons/textBlack.svg | 12 +++ _icons/textBlackSmall.png | Bin 1568 -> 0 bytes _icons/textBlackSmall.svg | 10 +++ _icons/textCatppuccinMochaDarkSmall.png | Bin 1751 -> 0 bytes _icons/textCatppuccinMochaDarkSmall.svg | 10 +++ _icons/textCatppuccinMochaLightSmall.png | Bin 1751 -> 0 bytes _icons/textCatppuccinMochaLightSmall.svg | 10 +++ _icons/textColor.png | Bin 5344 -> 0 bytes _icons/textColor.svg | 10 +++ _icons/textColorSmall.png | Bin 1790 -> 0 bytes _icons/textColorSmall.svg | 10 +++ _icons/textDraculaDarkSmall.png | Bin 1641 -> 0 bytes _icons/textDraculaDarkSmall.svg | 10 +++ _icons/textDraculaLightSmall.png | Bin 1624 -> 0 bytes _icons/textDraculaLightSmall.svg | 10 +++ _icons/textNordicLightSmall.png | Bin 1624 -> 0 bytes _icons/textNordicLightSmall.svg | 10 +++ _icons/textWhite.svg | 10 +++ _icons/textWhiteSmall.png | Bin 1624 -> 0 bytes _icons/textWhiteSmall.svg | 10 +++ src/renderer/themes.css | 44 +++++----- 45 files changed, 174 insertions(+), 213 deletions(-) delete mode 100644 _icons/iconBlack.png delete mode 100644 _icons/iconBlackSmall.png create mode 100644 _icons/iconBlackSmall.svg delete mode 100644 _icons/iconCatppuccinMochaDarkSmall.png create mode 100644 _icons/iconCatppuccinMochaDarkSmall.svg delete mode 100644 _icons/iconCatppuccinMochaLightSmall.png create mode 100644 _icons/iconCatppuccinMochaLightSmall.svg delete mode 100644 _icons/iconColorSmall.png create mode 100644 _icons/iconColorSmall.svg delete mode 100644 _icons/iconDraculaDarkSmall.png create mode 100644 _icons/iconDraculaDarkSmall.svg delete mode 100644 _icons/iconDraculaLightSmall.png create mode 100644 _icons/iconDraculaLightSmall.svg delete mode 100644 _icons/iconNordicLightSmall.png create mode 100644 _icons/iconNordicLightSmall.svg delete mode 100644 _icons/iconWhite.png delete mode 100644 _icons/iconWhiteSmall.png create mode 100644 _icons/iconWhiteSmall.svg delete mode 100644 _icons/textBlack.png create mode 100644 _icons/textBlack.svg delete mode 100644 _icons/textBlackSmall.png create mode 100644 _icons/textBlackSmall.svg delete mode 100644 _icons/textCatppuccinMochaDarkSmall.png create mode 100644 _icons/textCatppuccinMochaDarkSmall.svg delete mode 100644 _icons/textCatppuccinMochaLightSmall.png create mode 100644 _icons/textCatppuccinMochaLightSmall.svg delete mode 100644 _icons/textColor.png create mode 100644 _icons/textColor.svg delete mode 100644 _icons/textColorSmall.png create mode 100644 _icons/textColorSmall.svg delete mode 100644 _icons/textDraculaDarkSmall.png create mode 100644 _icons/textDraculaDarkSmall.svg delete mode 100644 _icons/textDraculaLightSmall.png create mode 100644 _icons/textDraculaLightSmall.svg delete mode 100644 _icons/textNordicLightSmall.png create mode 100644 _icons/textNordicLightSmall.svg create mode 100644 _icons/textWhite.svg delete mode 100644 _icons/textWhiteSmall.png create mode 100644 _icons/textWhiteSmall.svg diff --git a/_icons/icon.ico b/_icons/icon.ico index cb73bbb4c7922528bc2c9b3f09461c04def6b5a4..4d18cd5f545ca4fac11bec838d89485439876f29 100644 GIT binary patch literal 492059 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 literal 4875 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 diff --git a/_icons/iconBlack.png b/_icons/iconBlack.png deleted file mode 100644 index 1663986267da737e5804097e6fa646222e050a3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1794 zcmbtVTToM16g?!QfdmpYC=v`PifAzq1gfU;h!99b9vT&;3IZw`N@(%QBS;!Zp-?I~ z*bznrgF*!nD8A@iz+jmwDkB#$V$lm}3*`nYK1fPUOwx<}s6T%BvDccl_g;I>%=$Pb zF;U_66ea}#U@sJeZo%0wTQ=4>x{X&{!^t{@7s&<(^KMk%a5T$$~AB07%^dkShRq zZNXU!z+nymlY0Q*RsrCcUXk!i7`{tLiUt+JVqhTrF`suH&`^@n~Q#XamZ1yUMd7`B9D2p7#j!8PvO41FV6~Eev?-cJ}6?^FM zU}16Ond$WtufMFB{$tvF#4Mj4H~#+P-n!MO9vb&AAcBya%lXo0Z-ddlEe8mXEIOiJaSZkrj$GV<2dSW^-Y|lQs!S!gKO#)f@yZ~?i6STR8 z8ay$cx)*y%|1Aj^0<$lb2F{fS0y^dZQMjb)f~eN4d6241J~eb)Y1E4llfea(0z z*W^GPq#tpR#IJ^oZ2k{5q>6&Y3Hb~ZP$D@+>@Cx5X*~A zocI1xvQ;VdF-;|`_ewU$Db?%1qnGVvPns`Xd-%$!}%!}JH_2r4%;g#?W_9LNQ z+p@8&Ig$wLu6X4i=@C~+*e$vPlaMkZ>(&=xdspYicS(POr+WtryoBZAnAp$TZuvJz z{D(AlhOM;`_vam+OwOx61UHn}Wo-6Zu{--l1>z@AQQIJAGkx=clmy zdaUS$()nkF#D)$p`9L8J(44VG?E_jn0|818Xr18Agt!h85EPjflTdn|Cnm$vlpVGG zVkb<3k+Y>)Ar}92GwU$D)~9)F{5yt$KHS@p<)O1Kz~4iIm#oE#G)m_W7rEz76&TMt zD{{}CQW$HAk|NqqPF&4?On&OUBE`nEwA+MaSxtQ-3)0B2`zdl`?HcVejRd>z)>TWr zXSs&JDfKY;f%=+B0CY& zB@%Qi*W`f7cGBTwntZCV-av#@kbJ7j3P0L$5AXOh$*6bpNdoE}eSit6t_&Sz=|a(G zBIT#%G*>eEQfRir$}H`4+*2kPy{)K0RvmpoU4+@*GZdfLDX+o&4n$a|YJ;P#-YjP| zYq>dys6suw`?70De$9o8qRO(ZCSxWdsycmA-59`aU@#l^Byf?Zr!C<3>6~f@r=$e@ zPjH9$JD|OZ&^~T*#y*_DYR+m7+lRyE_-^%C!}Z~C{WzW+4wu6jFCCrzwEj1wrSCns XKj;01?;oa2;RYb&M}@X**i-N?^ZG%> diff --git a/_icons/iconBlack.svg b/_icons/iconBlack.svg index e61b30d675bb0..09822b399508e 100644 --- a/_icons/iconBlack.svg +++ b/_icons/iconBlack.svg @@ -1 +1,3 @@ -logomark \ No newline at end of file + + + diff --git a/_icons/iconBlackSmall.png b/_icons/iconBlackSmall.png deleted file mode 100644 index 04528fd4905051aa994b6e79a4955387be8a293d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)P000>X1^@s6#OZ}&00009a7bBm001r{ z001r{0eGc9b^rhY5=lfsR7l6Y);&u?Q5eASC$NS#UuY7dDU?>H){wGqks#ElElsAG zLlAxp`#KGYwiN_!Mngkp`M>pCxOln8w{z|TKM>F5{>5{yC?ax(FZ>2PA}9aTompE& zDB!!op@qO-Bx>OrB@2OxDN@IYg~-#q$gzb;(G+Q7e~p{J;X)5jg<0lw^>L0}ml0o2zs{t~i02#cy3w1i zB0;anyNo>J4m&O)FR1DRYkg0~xI}uH9@=K)O%uK yOp%0Gnph&kI3le$A}Rd~ + + diff --git a/_icons/iconCatppuccinMochaDarkSmall.png b/_icons/iconCatppuccinMochaDarkSmall.png deleted file mode 100644 index c963e8a0e823feb87c79c04ba2447b1f2c74f576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)P000>X1^@s6#OZ}&00009a7bBm000jj z000jj0s8EHL;wH*TS-JgR7l6Yl)FmAKoo|L32d{XAb5+J$x7C0b7Yb2EVqolf|t@t zkgY5%T@wqRz?bkfEG+~Z3lRhb8@I5~_(u~BL9@Ay2R_I!2+Rl<{!zb1W1R%(!pvLqfP?HVK(<0N)P!5ip}+pd`kf+w&A zCbA@_gpzaiI-XC$aZWt24Gf^sXGoUhz}1abcY`+FCY2~@I+QIDj;A|)oG!+gZ@?a~ z;s7DJfGtC!IsJAdiMa;H5KI-46_kYF_VWwE4-Lthij|~!1iN5Cr6lGKD>GF}p25B; zxly+y?8^xFp!t=N(c*lUN>`DURFORVhh(T;B6t>omr5lG(J-}jeqH$=*{SLQ T{R=sb00000NkvXXu0mjf#Obum diff --git a/_icons/iconCatppuccinMochaDarkSmall.svg b/_icons/iconCatppuccinMochaDarkSmall.svg new file mode 100644 index 0000000000000..a9cdbea80ea05 --- /dev/null +++ b/_icons/iconCatppuccinMochaDarkSmall.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_icons/iconCatppuccinMochaLightSmall.png b/_icons/iconCatppuccinMochaLightSmall.png deleted file mode 100644 index 618b08e2916ae30718f326f86b0224e1ab391c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)P000>X1^@s6#OZ}&00009a7bBm000jj z000jj0s8EHL;wH*TuDShR7l6Yl)XyBP!z|H3N8f&K@crERNuhOSMVA97@b@?IXGGq z2cN**)vQi#mYQ_Xq}s)y73v2F$t^`hkN=hgE@s4)71uh zU?oa$AAJ!A4Fi)Z7dIYC(ADouR-*~IT@-6%Xs-PmhOHJ2TnXbS*f8nKYT}5MO zowOsHS`yw}a$G)qk~WFWS9IMRQ0~Zb5*11BKO{B%5;vGf!iH9fB&x+qXBL(J2T;F6 UM3$^ui~s-t07*qoM6N<$f>b-M(EtDd diff --git a/_icons/iconCatppuccinMochaLightSmall.svg b/_icons/iconCatppuccinMochaLightSmall.svg new file mode 100644 index 0000000000000..f5e1d9d43b57a --- /dev/null +++ b/_icons/iconCatppuccinMochaLightSmall.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_icons/iconColor.png b/_icons/iconColor.png index 191266143368e07d70b53d51c9cead075d329ed8..235fee5bd611998abbb9b0423105c4cb2df17c62 100644 GIT binary patch literal 10124 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 literal 5020 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 o^li>6f&Bsx3wq60 - - - - - + + + + diff --git a/_icons/iconColorSmall.png b/_icons/iconColorSmall.png deleted file mode 100644 index fd0060151726c5fa8c82cde839123a8b904998ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)P000>X1^@s6#OZ}&00009a7bBm000jj z000jj0s8EHL;wH*V@X6oR7l6Y)ICeXKpe;Mzg4=35d=}R=+FfFF!k!zx8Q5=VRUlo z3G>sm+= zc!O=2l0{AlgR7+mKA*VP5t*<9E0Ck{B(ezev~k_rq7Kheg2A;K$s?j>YVDy>wjG8J z?8CZ0LCJPv)FhF)_E7gCz9%?FK#LWN8F7u^1Ct*bwv$t_lCW3UgJqQw-!oQLP#JlL zgALosXB~0(WdIh8k9S#i01`yHa2DK$%9WFRpp$;vYX~~32Ww_ zSG_ + + + diff --git a/_icons/iconDraculaDarkSmall.png b/_icons/iconDraculaDarkSmall.png deleted file mode 100644 index 5b515c64960e9122a1a796dad31f1ff1c80a8e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)P000>X1^@s6#OZ}&00009a7bBm001r{ z001r{0eGc9b^rhY7D+@wR7l6Y*3C)+Q5b;XPncY^)54Vyt}1C;8@Cc#caad-vf8xj z&s+%NW#sL+D70Nc;Ld2#qEdSgoPl9*{+e^9X2kWZf6ju0-xw3Z}L95#Xcq&pe+BLu>UUg ztx=J*6A^L5#AFqjW)bOR5h?0NAbSxV+QblFHX?uPwH!~WQ$l0_0000 + + + diff --git a/_icons/iconDraculaLightSmall.png b/_icons/iconDraculaLightSmall.png deleted file mode 100644 index e497925fb76ab8909db7a505e5f8cd78a0177a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmV-n0iOPeP)P000>X1^@s6#OZ}&00009a7bBm001r{ z001r{0eGc9b^rhY6G=otR7l6Y);nv$P#A#W6tqJ(FLV-$lPF!CTuW*7U$h|Ts4ktX zw+@BUpV9uE4i)XzLcvXOkkH!88~6f2G&wQnWOyJXEcpDLUcDPDpBu|~+ zcerXK5j7BNWEMwc7)K;6zd%MKjx3(BG7 + + + diff --git a/_icons/iconNordicLightSmall.png b/_icons/iconNordicLightSmall.png deleted file mode 100644 index b5b83494c8e564de4e85fc3b60d3a4d1900232dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)P000>X1^@s6#OZ}&00009a7bBm001r{ z001r{0eGc9b^rhY7D+@wR7l6Y);mkXP#A#WuMj)9B}ykjoQlQO$yKD)e_=teW9!nX zUZR5_{*3nTbWqeyq2Lt7!NF_a11AuIxtVkF!9z<=$Xj}n5($D}A0POQm||TRUdOSu z!sL%YXo#({fiRM^c#K^Gk?*v~2pt2Fo2*FNKx8K^a*Ae&lh4o-ef1S?Y~QX zYphAx$%r^&VycQfR}t~6hM&hTot$g0000 + + + diff --git a/_icons/iconWhite.png b/_icons/iconWhite.png deleted file mode 100644 index 38f58b591df9a1f4c0c3e3ff69b4011f001cb060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1825 zcmbtVdo+}39DW&>F$~G2i%O{DlxUbHHJTW=aYzwde8^Pb=He&;>svz~1psR`07+Z`KFwkH z5&$L%fQh{TP;&uT6q6m+;fiUM_j@v&!CYF_AFUYEh;`c&2Y{8?{8Bn`)&57UsSde& zxu`!Q;B*OVSKs7gJE-ZqJJWqn484|&MDAvSyKiOn8!FRJmhLV&!@A^DqGq6}p?pEj zW!(?A@aITk{GEZ6=WDOu;<&b_uhh3i9M6}yrVOPlR``0*k7#*pJlftFO_O2uCZwqO^%(F^d|IN z>irEiUD3bvbqp0J-_Dc^0{wzk#R~$NYBz3_MqXsQ&E|$fVY<)c6LyXFGi#_!f8^T3 zp{seS7aAf7{2Qf{hKa$wX2!lD+ukhw04@R1#M*6E?&?nqUbBeh2jQmbRwTC=6_&x( zb7$WLt59vj^qhq3MP{&0+r==n7LRT{;b0DHK*|LU6_XiU>EHr{U7#!x${pmBUa*2i zfLfQ*<0Cyh9pWb^7hr{nHSth`)lpp}x_L(4$C3Jyk!Z#7C@%nKu$~uHs!Fa_p0;0! zlazA@D-5Bm@;Ys(fi-7W$FoDzc5|cy>AzMOqO-QVe7ZcsRcH2e1ij~!aClQ4Z@fte z=^>#Zxy=4TB~+1n=}}o8!8?l8JK`v~UGFUDzZ{B=@35#W=&iOXU(~GHurMz&<+XmP z(6t5$dto;o8os#>F*&lJ)l|g4{K>G_n>_7_w`wdpa4bD10)0YBe#)U1KY9A_$6$B#JD0_)+| z>vm0#am=Rz z)76*Hm*(uAhyD|)iP!Wd9*$LYbb%1>$#;BnPeI%GvJh{>gfe^ryVp-xdoR4RZCpQb zX3KhAP~?P47sq6QA~HIhD1CdF;&RjE!+Ji3TlklxM`j4x}wI*@UEiKY4)^ zj^069M$3`m(NrWUzZe&ts@=GRI(qn;{(xRzY z_I8O@x{IpDl7e_)Mq?3C@J>GeYq-i^qWz!p-~adpzJ8{SA!EFmVjXNm?1k8f+A$(i zmFP6j&r1zfz>}yQ!hXe|%bjFEqLWBNGGB4$HA)!CsNqQOvbDZURslz%G)x&pkKZ!r z&6VD5(S;aOPMCE4ppZ9H+rW|D8&=0M5l}Tn#xsE#n02_!9acOt?$^hBmIepZX@21| ztB}mOCk%SLINM%RG$xzc3NQaVNUzykhvo73iup$sZB)NKW*b7$gm*m%Efr{pJ=Ixi zqxnoeU)ISj)Sadb?W)fzcIeSpu$ah^&XERgA$^)kx#o3>8DLKFy)A-x{*A5RM6QSI zy6Kn*door-E& - - - - - + + + diff --git a/_icons/iconWhiteSmall.png b/_icons/iconWhiteSmall.png deleted file mode 100644 index 876cc6eed15385ca8718f798941e597b805215d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIoCO|{#S9F3${@^GvDCf{D0tD+ z#WBR=c=C_`|LY|M>i_q1y<^(QCa{^|W17Oh-}9LcG#q7;c)_0Z`hN%mPsNjE%o~M8 z-~906_b$79Ym&V~j{gZE(G^acnm9WiOFA&jR}H9)SD44Ob&3Q}P&CVtOFRY+2h{&K z%walmhi3|d(&Hzp0@EkuN_GnR&r3~Nrguqau>q%Wy5!VPoF|M}qoO{^bx1eNm@78z z0FU?r*Es_D7LwB@ + + diff --git a/_icons/textBlack.png b/_icons/textBlack.png deleted file mode 100644 index e79196384afdfab68af5bbb36c8391507ffdf9f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4383 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 + + + + + + + + + + + diff --git a/_icons/textBlackSmall.png b/_icons/textBlackSmall.png deleted file mode 100644 index 80560ba9d0a739c01ca1d54c1630a30aa1278696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1568 zcmZ`(S5#986nvnR1Ot&sSE_IpvfxXAAV^CjE1|c5B2|MxAcT<6#03l3=t__pQ97X) zkrMC(6%-W(Boq-viV{SnBcdBW_UzYw%$+-P&z$==*PI-V!Jvvz003YFYbzH4lLSDC z?-tC<6%X?Tv^x-Mj|G5+bcrASA_A>?+SW`UD*SBp?2U5ECh>BrwGo1be*L40P9CsCFl3 zXB+@T5Cki%ThQCjytoV=QK9!6PZ-*7uM{eazktPEe6;Vlw)n{8qv~KW(4SCJe@5O; z9uZiy=dMt4S@%~Qtmlu{i-+s;VCoEou?vuw(4!E|meCf8XwoQlW^QRnWq+@y2vKuv~a*Cp-DgQg{}nYt#Qlv7{D8$#80l=}7bfM;;(Brd4=Xp16p zlI@!BGhqPP_M*{Lo06nz$ixKW$U?cq@WD=uduE+Qu=Ki*VjsQ66Uvk?EoLpbmr|=Z zgW)&rTm!7w`lh41eIwJ+Dj}~TIEIj!j>}W}nP*7mn z(e-x64mY2r`m?3uvz9*tQsfF{afM0kGj|ug<3DkluX`&SZSJ=&rj+I9hPF$mARG?Q zT;)|0uklSa7hAdN{rmU1-`9b4KhXAPemOZ!d@m*H1(bN`{4&M&#=n*2s(VMMUZJ!; zSEQC{S_s!V1*C^_C9=m3CeE*!Nem9M@TKtexM2_v1$}R7bY-Ru?-NUcn7pH#!)41U zUC$-&d>2+V`p$%tS4EAsli|ukW@6GK_lbw1H}m09NUr4?*V$2L@CDouSG*O7&D-x3 zatVeR4dS#JXDl>t?P(^&sC&%GarJ9)HBPr$zdqsqY%1RnR%N^7sNAs3HrS<*)2XtT zi*iNTir4Wo#~+j7@d-;oJMIaOuFEJ*Yk4F3v{&fKTaA-k>YsM&lsagnd2MnJx7Mp) zy*~-@)LgnxEO=fbMV3oTj&#vT?1D_9$3i^4*KOYaO^=w}HWa6B73x00 zY!{a^h8!=|PxQy?)@`<6RUk8#HdjT$2wmy?#nROs$GF9YUW?8TlomN?HP%dp}Jtz&wJ%64z;^8OZK!#*_T&oOeb$zh$zV?K?e zY+UAWor&O6i2V{(1nqKZmzDv0yF|0CKoOHyaKr&WS5hL&%~y`HZ%Sa%B%$mzTSIR% zlJCM!vyeNaml<+}O5Qi8kn^=it%;tVrB_z*ygxPpvtn2D?fNhHBj8y|!WUFR&ixOe<^T zO?C_KFe{f0i8^~mwg!EhL~gx|*jk$^K>piAf=c?Ow4>CjcwQ!+&KJ}tpvk}=XOR3E z0Vby-0t5u0K{Tj~0(C)sH + + + + + + + + + diff --git a/_icons/textCatppuccinMochaDarkSmall.png b/_icons/textCatppuccinMochaDarkSmall.png deleted file mode 100644 index c5b70b21548f2e184f7a2e2f18792ebc0ef08384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1751 zcmV;|1}OQ7P)uD2g@IE&f8>LX4oMF%%F3?gkr)DDD*%R8&MoM8FzU1OajU&g8r1w~c+xhMJZ%3a>Q?|k3v)Cr+F=apJ^@6DLlbIC0{{NxMlbHY9jb2~?!O5FpZl4n|ktLSPawF$HAIWxzoB-Vkf$ z0~Z0806o)oC`m{$@GWo<_zQ^p;7!>~2O;BFV0@Cj`r$>OUx@W)t9RTRhSZ=7MSz>t zV!s2Q0bf}75?BG8+(8J*24;jH)2Ps+Ha5Jz^&5@*IA#kqWsiT5yLh4ojF~BU~XJ9*U zwX|9Nj{&~`TYz%YZxJGU838=cL@2Ie%RHcq^-Yq+jsuO>~8|@2Id1Fu%CjrIt}O=PU+j>1zy0h$#Fe z)h~fQruv66qcr^w0Np$YiF2KyBw1Y5*Q#%uAsWvjTARsWAEKVb8V7R^#u(<>gvf$B z=`LPZkj(2f$;CYgY1C$~HeuL*(C+7$XW0L=u@bJEFnu3aIY}LYXb6{O6Vjy9cn?D6 zCn2QBT6>P_`vaKD7*ea+#m(ni^F{%`vi}_~m-Q+G+aLvDasZHL5pp2G>VE_BW zgzVH8L+Y^DT2}&fF0k5a-^zGm@I5cx61$qiroC0lG-rGCi@E;9G50eoD`EO;VE$de zJ#+(p8ko4} z(jcXiBTYyKgSi<~Z_-Eh=K+@jix{s=`;}_*Pf7-3y;n}rePV$=`-)i#ml$`aRsVWI z^|vym&*w$dzE|ihtHmNjij;-4f)P}<=@U|ORa`Qz_#j>HRA!B(yeuzdtQlnpnWcjI z$^e9nQKosDPpM&m%9?gFOIysWteJjT)*GzmW~sn!s>_X>CkptA?K6G$)r(o1&UWgo zG1HWS1mAI;%_Kx$-0o3{%sT6mx|(UYeAfo+dQfA1Q?1p%o%fgx{M)3&6U}KZW#%F$ zV0r*ThST56U7|Wk@$6KZeXGZvW)0KW9E-@FJRqAq=4@mk^f;e=W%96?JC0;9eXaM4 zbGIf&URRpCc>dzXP+}y9>vy$#IH`LFY zJ~gDEZIM*fTMtD?g07e9r`A*z=(fH$Xo?+7>lpw5002ovPDHLkV1i?9K5PI0 diff --git a/_icons/textCatppuccinMochaDarkSmall.svg b/_icons/textCatppuccinMochaDarkSmall.svg new file mode 100644 index 0000000000000..ef5d976be26f2 --- /dev/null +++ b/_icons/textCatppuccinMochaDarkSmall.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_icons/textCatppuccinMochaLightSmall.png b/_icons/textCatppuccinMochaLightSmall.png deleted file mode 100644 index 8a7bd5bc534a4fd307bca70f18b925d0723ece1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1751 zcmV;|1}OQ7P)AC?E#h4K@-{T&bvlq9Q6H0@k2b5D>@jOulPQuJ6sf zJ{UVB_at9lxy!rvo$sFIo*^T{i4!MIoH%jf#EBCpPMkP#;>3v)Cr+F==`>lpu|1Bk za}RY+*tJupj3a&hj=aNfY)bUNla>jb2~;M*X+R{64n}w2B48pgAqiy6<-j2M-Vkf$ z0~Z6A0=-gpC`m{O@GWov_zQ^n;BDDVnviicFfPGf{qQo-Kg4>o)I07ALu$~4BET(b zvEPA>z!w(21eO6Or3oR~!1NG=d??-^#Cq=nfAbyR$btAj2ssF>0)_)46~tYg51gD% z0Zk4E@EEWJSOmNPY*WgY@A(X90v2=3WFa%eTCIu@S)rn(NcSwaqCLTz4q0IR-y^H(;9O;P|akZ zrw1tmfH7RJtD2_?`GIW(jAJ(f*8>-bKKu?P_cw-P>wxR%eWHmhWKjS@h5_q1te|oKWCn%a4Bo+%3xSASH_%ZUOeHIg)hD2hR07bySc|NQ3G>3YZD}3~UFk zkv6OU3E&rC3s7PDEka~3BY+o~2*p%vnG1BYzDcs!vB2{{o284*z(aBXy$Cr-Us(&> zWTDmsLp(=w{Ga@|-BkKZa{83}c#`9G01JUeDs>mzrR^9?sSUt>_BR9f0P}#4*!Dh9 z9;#NpZ-b@e+3KBL=oNlcI$J?KtX6ZD#l4F~ zNHQ$pBGsyG2Tyw`^YaMD%;5(JSvOcN>PkgQjmcQ>yb#!2Ca~1=%^fiSfL=^st z>X$%Yp!$b0qcr^w0zEtkiE*8wBw1Y5*Q#%uAsWwOTARsWAEBPa8i#NX#u(<kj(21$;CYgY0_q|HeuL**zV_;=h*+Ou@bHuH+>&hIZ+*gXb6{O6Vj~Hcn?D6 zB_O2OT6?zY`vaK57*eO&#m(ni^F{%`vj06Vm-RXW+h7G@av+dr5wbtd>VE_B6)OFF zjeb?*HsylE?;azgv>QQbL4{ds+2%dKuAeI zLU!tlA$3?{tt){#7g%YvZ)H3&_@0+;iCryW)81-jnzKCm#aw^lm~X)h-o~Dq2&8LOI(8 zrHYVJmMBanl^5_9YuuQSnG@ntnT(LW%mhup{9S1I^DO~mNRhSnt*Wn`_l-=e1}5&g zEJ*3(a1)ZjU~a}VnDmkTdBA1B0>&%TewEt%(~`kh@0C+@zgVEpz6vabON_hAs((GD z`rDY&=kp?J-z#*M)oKwUMam*t!3Zkb^a-iCDlQpUe1NWZ3bV#CUY6%G){HWQ%v3>r zc>qF2E7QE)r_?Y|Wlg)8r7dJu)kUzJvsBdmZ8XFK)Q zn5jxZg73J_W)h+=ZuhE0W{q`8UCA_DzH7a8J*c(5sm|)(&U?&y{%um?3Fb7HF>{d< zFf9Nf!|CtkE>V-9cyle%AZN zI%lXDXRv@LzF8f%N_A7enFlDw>O-+bevFsodR;!@vm5VTEk5_VPid)9Lx`|=9s^7? z03ms-N1bC#Isqy9tb2`RsbV}U$NhB;%c>`d8#o=fgeQ73{rg~3sr4)1sXAMg{kw-6 z)170+aX;mTWM+F+JapM=Zj}0|G + + + + + + + + + diff --git a/_icons/textColor.png b/_icons/textColor.png deleted file mode 100644 index bdc83759e6ece70e3aea3fe221e8c844a0239de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 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 IU3Yr$AJ(RahyVZp diff --git a/_icons/textColor.svg b/_icons/textColor.svg new file mode 100644 index 0000000000000..b3bb6cb3dcb61 --- /dev/null +++ b/_icons/textColor.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_icons/textColorSmall.png b/_icons/textColorSmall.png deleted file mode 100644 index 7a2196afffb52a4aa3502774e23c0719922867ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1790 zcmVWH77JKVDpX3{B0&%- zvS`tSfItvTK(Q4AD#pKX44^5Dl_GZWVL|QFUmQGzIs9VIaQ>q|Ok~1w@A! zs|C0ZJOEnN*b1Q_nP3mN1pWqWCN(z{8;ODp>_mLyR{~^)Wk)s6hpZ0#B<+ zKLxgeZ5BJgGSI$`2+|l#3L(fQkQHLQjo=FV*d;GSZ3uE1tOdP6KZR^pcY&MgLJU!p z)E>MImViaz6R=-R{$;Qk6obXAGg8D1F;b=rb=S?>^70A_JgkFZ?IZm`6j0WQ*C0$u`h!1pZs z7IgFyC4eC9EdK|R!YY3%*slDu)Z}VGj(`fr73pt_HObRepADII|4H9@ZmV-ascN$f zq}YN~#S%`$09AH~Z+j0(iA{{bvj|+FSWjA8)CeVtY)cJTeh)ay^4TCkwdn~q(^ni) z5Sj2#m0tpVlJa*0+m!z`(9A=SN{-WwBFk3woAT{9LgU$qt4+#Jfj4=Mk=2;NzriFR zMYbR^frq(We5H`gYc-hWAxJT(Z@uN6Kq>ui*nZaekp6{cm2g}s+vT%W4pT2dLWnKP z7NkTnwFrXDi6BTPYwYRDcLt1N44J6P%jJM+waWu1>Ho%S%lZPOfm;+A;ARkS2_jod zkw-v&1ng&>&%sQKXVn(83)~3ez;TxC^k^g7-8{8b_PdUPoYen>v!p#wmY1cnHjAyfWpFs$}7P(9Y_&4|qjZpwDSH z$(rzs;05dc>pkU{Gr{GK8X zC}0XKu_n(5GF1ijDsY?I0q6jQkpF>&QLSPzKeO^mSm{-uhNpCW`?$ z*PJD|BKvZ(hl5@+zSk#a2L3eOk;%#ZaX$NVyKEBb6Rnr;D$1h#ZiXY={ze7qJJL6H zB}BxVS1(_fZ};{UyHCGSwem^0IwDrLO?AGJ*T#4HTKzWf%$YN1&YU@O=FFKhXU?2C gbLPyMv;UX<11_pPJ#NJfp8x;=07*qoM6N<$f_D2uaR2}S diff --git a/_icons/textColorSmall.svg b/_icons/textColorSmall.svg new file mode 100644 index 0000000000000..c4aa40176c121 --- /dev/null +++ b/_icons/textColorSmall.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_icons/textDraculaDarkSmall.png b/_icons/textDraculaDarkSmall.png deleted file mode 100644 index ae232959572dbeed0a920d1f1dd4794c4ef00d08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1641 zcmV-v2A27WP)B+L#KgqJ#KgqJ#KgqJ#KgqJ#KgqJ^CI1d;Hj17VGxftjx`%Pf2V}Wyl(ZKP|y|DqnSHJ<_cOVi4Yk_X9 zgp4DBF)_Y18kPf@39L6m&2dK}q{h2YTi`mi*w4U+z{egw0iFSRwh}^;fN2R3vRYgd7A`19`wG1qoMY0jIRGP}>uD2v`g(1fB;Pl<{Rh8-ZG25&KLO zG80&Bpr_c!(x0_dH^9+N`C||=O1{=FPAn?KNr{u zd*t#ayIFwQb{R z&y@*X9LCRC+<=gEwGL7EeS#vT#APhZ^Y^m-E+AEn8Nv%%bhQZ*k_o)1^m5UsD}8^S zSf{@a=o~;ugzF3>$>#u{DP4mj8b7n?Z7zeoU+NfoqtrxCC})`B6Cw+4XSjGxK{Bsb zfyw|vYPH*|k61%}jjv~)r>TF+c?s8Tbp0p>AEypMY7-Drr_*@+-p?asP7Fe_y|rg5 z-7i2H+o!5_i6UvHXPus zE1{_)u)=Hq2KbJUeSXa~FfQO9qJY+V@gC(k6<}Rc+jbx^l&+=htW8vLQgyiyx z!evq^an?lZRVAF9Kur}!NH1oBPA|V_D1D*2fWz*PEN|@_lx`1e8A*35y|j3EJcZ%( zrX+-YYE+*potq0mz(v43xvy0FrRw7!lMKe2Q%=*}?!t^hh&H&~akqN!Ukj9e2UGeq z7NUM#p|h-dj}UpJ%%T_M)7VZYq;}-Efy(m_F!Yu&Ys}-G9|WG1c^o0vt4n=p9E21r z*Ssl8pFS#U+QlqwKC`lwjKi{CKd&g9>%A`5a-108Q?^f!vSxQ?Z93bj@cK+r28u9- zuVo^!j3hbTohp%8=M||dn1;)~KJdzea&J#lJ^dEeF&lZ8NZU_hS2t)FGZ#4llj9&H zkDC&smc;0HD&2lZKuxonX>77LrW>p2%>iRJ@gcNpjQ{Hts~TsiBnw`j6h?%t-rVze z;_K95D^QjCwLCx(zCL7o53^Dp@??SFD#CMG5(CMG5( nCMG5(CMG5(CMG5(CL(_VbrZT9+93+500000NkvXXu0mjf>W%yi diff --git a/_icons/textDraculaDarkSmall.svg b/_icons/textDraculaDarkSmall.svg new file mode 100644 index 0000000000000..04e05e6db6549 --- /dev/null +++ b/_icons/textDraculaDarkSmall.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_icons/textDraculaLightSmall.png b/_icons/textDraculaLightSmall.png deleted file mode 100644 index 219397d617a5f367a9adfa961072798e4848d486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1624 zcmV-e2B-OnP)1h7;r3e>t#X`#g}Hl;3r zKovA;L~W3ofTCDK-Qq6u%uIlgP2vp_ zSno~XPd?*oIS}nZ$Pr*YFbWu}Ans}ma7rh0wf%vIftA2=;2B`MQog*;$3Pvhf@7u% znF*}bs0jH9=-QTqRC6J5SM_1zJ8>*L30SKLISAbTPjnHZ?>$Axj`k#ERUC6tnFJI7 z-GROgm=Zh(cw@T(X95#|X&iHQm=8w(X+Sw}H87c$+ACyEKU#?<+1W!1Vu5Q&V5>m{1@#qi1a(Kq zJ_(Wm{WBEnQdGXi1VBTo{&yH>deDFGRVKeN${Z=sUX&}44kTokE)1!|;oiCusMCOT zUikkZ9Uls!VfEKz{{`CmC};v$8yqvwpI)g~VW zLZndar}}ewOA$uM!2k;>@+@RN%Y#*_U7lS+YbsJGWZTfTA|#Jj6fToWkFzG)q$=Um z1Zt`GqOR=C8tJH7j_$5ek4Q~C@RqJCYWv#dss5V@qx zrWK5)vRl+$R~qMyP?mp~uD60&V*!ih#f&xM93it+P+t=VA!W)mZ;LW!h{~GwFiTs; ztgL~4Sk@cn6@^Q@+vPgW69s(1_E}NZ?8~f8XFJv2m}yEuf^WIbHWH!>w|i6~v(YP3 z*D(#3_uA~02bJDCReAk8SjTMUcb5`Rbdw60xyT8a5eFfo_)?=ef)-gwWlyF~Qe%XM z!Mr1r%KaLCme5_Mb;NCKQhUt#m;6inpL{P96B82?6B82?6B82?6B82?6B82?k-q@- WhMUieNtkH>0000 + + + + + + + + + diff --git a/_icons/textNordicLightSmall.png b/_icons/textNordicLightSmall.png deleted file mode 100644 index b23422a08c14f10cad3d1e89da19816f1c79ec18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1624 zcmV-e2B-OnP)1h7;r3e>t#X`#g}Hl;3r zKovA;L~W3ofTCDK-Qq74mkKhCPOfj} zjT5@4=OkZd<}UBvcfNbJJ6*b%n3$NDn3$NDn3$NDn3$NDn3$NDn3$OS52U%dIT^?Y zibHT3kkpCx-2=D)m<&t`fsDBf7$)zVz*-r=g}}u?-?o0S5y02LVc>V5B??|^^UcJ+ z=VO7(W9&5=o&yFau-;ttjC&FxHQt4ifSc4}zW^TtpL+NVSOW~`B!r{@vl1X=vv`99 z)_Vi^gU|R%4n%tpas=1_j0VOjh`SmKoZQJ=?Ev6mU=^?ecpBKDlrQh|5l{!L!y8NftfI>($9=7Z6HDo_qw1x%r(_70iTpH`v?x!oIc0#M3ipm)GC zh5!?|Ubkq3uq~5u?0Vo@;5^Ys$o?j9Y!z?~y-y?-AuHk_WEAi|@H#j12wz^FF-wih zk`oHN=lSsufICGw0nhHv4L1M>)Er4V76a$R*jHu%AvLQ17+??y#-_^NXSWE|KmDq z#P>nKHq~G2lX$m} z6V-n|&@+IL7OpdrB#W#1LiO!%MB_7u*5)$U2dO8q#^Kz9Gluy-A+q3Zx{Fs7B=dS% za`6B{>a^LbO*r-!`TZR8B>SImR>E~#O+SjlC#ypcISPc->olGU(u6FGK}e3b_B_@1 zD^S7qD%CD-KEsUtK1&QB1 zUR(oRf%B{WoLc&KXZGVdkdXbJ#fuKdsCfry;VH@jTz2-5f>_{M64+`GK|y_G96{X? zvQL6!K>tj|x)hbKG6B$#s{d`qnI81tdzHy=iZVwEv=`(Gqyq`rtqViyaD=z61nM+k zz1RL792$Poy9%$RD^8w#^^btXtl{l zfeXz3-cp1SaxlO`iaZNh!17?VYL{o1(3*-A3fVTStq95E6@|;B(&Ma&HmgcF zHG!HcjF5rM1YN&;&rrvI;#FRdRg{WUw=q#(zBSbDK zvuOomsO%PX*OkV3BbDVJrt7U>)>yz|c`;+nct^+_71YM4^F#rkvwe1yHTyAZ)7eh7H)gt0kl-7xvz>(K!tHLA$ZYb8 z)b&im<-N9e00X5AA zrm?BsoW49D+XCinTYq;kKSpCxpcX&rGJo75h2{w4p?{wLqd#KgqJ#KgqJ#KgqJ#KgqJ#KgqJMC4B| W12+eK6iZtG0000 + + + + + + + + + diff --git a/_icons/textWhite.svg b/_icons/textWhite.svg new file mode 100644 index 0000000000000..fcafdd3bd049e --- /dev/null +++ b/_icons/textWhite.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_icons/textWhiteSmall.png b/_icons/textWhiteSmall.png deleted file mode 100644 index 219397d617a5f367a9adfa961072798e4848d486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1624 zcmV-e2B-OnP)1h7;r3e>t#X`#g}Hl;3r zKovA;L~W3ofTCDK-Qq6u%uIlgP2vp_ zSno~XPd?*oIS}nZ$Pr*YFbWu}Ans}ma7rh0wf%vIftA2=;2B`MQog*;$3Pvhf@7u% znF*}bs0jH9=-QTqRC6J5SM_1zJ8>*L30SKLISAbTPjnHZ?>$Axj`k#ERUC6tnFJI7 z-GROgm=Zh(cw@T(X95#|X&iHQm=8w(X+Sw}H87c$+ACyEKU#?<+1W!1Vu5Q&V5>m{1@#qi1a(Kq zJ_(Wm{WBEnQdGXi1VBTo{&yH>deDFGRVKeN${Z=sUX&}44kTokE)1!|;oiCusMCOT zUikkZ9Uls!VfEKz{{`CmC};v$8yqvwpI)g~VW zLZndar}}ewOA$uM!2k;>@+@RN%Y#*_U7lS+YbsJGWZTfTA|#Jj6fToWkFzG)q$=Um z1Zt`GqOR=C8tJH7j_$5ek4Q~C@RqJCYWv#dss5V@qx zrWK5)vRl+$R~qMyP?mp~uD60&V*!ih#f&xM93it+P+t=VA!W)mZ;LW!h{~GwFiTs; ztgL~4Sk@cn6@^Q@+vPgW69s(1_E}NZ?8~f8XFJv2m}yEuf^WIbHWH!>w|i6~v(YP3 z*D(#3_uA~02bJDCReAk8SjTMUcb5`Rbdw60xyT8a5eFfo_)?=ef)-gwWlyF~Qe%XM z!Mr1r%KaLCme5_Mb;NCKQhUt#m;6inpL{P96B82?6B82?6B82?6B82?6B82?k-q@- WhMUieNtkH>0000 + + + + + + + + + diff --git a/src/renderer/themes.css b/src/renderer/themes.css index f5e279ae514e1..741dc631d2194 100644 --- a/src/renderer/themes.css +++ b/src/renderer/themes.css @@ -51,8 +51,8 @@ .system[data-system-theme*='dark'], .dark, .black, .gray { - --logo-icon: url("../../_icons/iconColorSmall.png"); - --logo-text: url("../../_icons/textColorSmall.png"); + --logo-icon: url("../../_icons/iconColorSmall.svg"); + --logo-text: url("../../_icons/textColorSmall.svg"); } .system[data-system-theme*='dark'], .dark, @@ -146,8 +146,8 @@ --side-nav-hover-color: #57596B; --side-nav-active-color: #3D4051; --search-bar-color: #3E3F4A; - --logo-icon: url("../../_icons/iconDraculaLightSmall.png"); - --logo-text: url("../../_icons/textDraculaLightSmall.png"); + --logo-icon: url("../../_icons/iconDraculaLightSmall.svg"); + --logo-text: url("../../_icons/textDraculaLightSmall.svg"); } .catppuccinMocha { @@ -165,8 +165,8 @@ --side-nav-hover-color: #11111b; --side-nav-active-color: #11111b; --search-bar-color: #313244; - --logo-icon: url("../../_icons/iconCatppuccinMochaLightSmall.png"); - --logo-text: url("../../_icons/textCatppuccinMochaLightSmall.png"); + --logo-icon: url("../../_icons/iconCatppuccinMochaLightSmall.svg"); + --logo-text: url("../../_icons/textCatppuccinMochaLightSmall.svg"); } .pastelPink { @@ -187,8 +187,8 @@ --side-nav-active-color: #3124E7; --side-nav-active-text-color: #FFFF; --search-bar-color: #FFF0DD; - --logo-icon: url("../../_icons/iconBlackSmall.png"); - --logo-text: url("../../_icons/textBlackSmall.png"); + --logo-icon: url("../../_icons/iconBlackSmall.svg"); + --logo-text: url("../../_icons/textBlackSmall.svg"); } .hotPink { @@ -209,8 +209,8 @@ --side-nav-active-color: #959595; --side-nav-active-text-color: #000000; --search-bar-color: #9C2D5D; - --logo-icon: url("../../_icons/iconWhiteSmall.png"); - --logo-text: url("../../_icons/textWhiteSmall.png"); + --logo-icon: url("../../_icons/iconWhiteSmall.svg"); + --logo-text: url("../../_icons/textWhiteSmall.svg"); /* The hot pink theme does not have a great color contrast with many other colors than black and white. This means that the primary and secondary theme colors are forced here to be black so as to avoid any @@ -257,8 +257,8 @@ it can be safely elided. This looks quite pleasant on this theme. */ --side-nav-hover-color: #3b4252; --side-nav-active-color: #3b4252; --search-bar-color: #4b566a; - --logo-icon: url("../../_icons/iconNordicLightSmall.png"); - --logo-text: url("../../_icons/textNordicLightSmall.png"); + --logo-icon: url("../../_icons/iconNordicLightSmall.svg"); + --logo-text: url("../../_icons/textNordicLightSmall.svg"); } .mainRed, @@ -272,8 +272,8 @@ it can be safely elided. This looks quite pleasant on this theme. */ .mainTeal, .mainGreen { --text-with-main-color: #FFFFFF; - --logo-icon-bar-color: url("../../_icons/iconWhiteSmall.png"); - --logo-text-bar-color: url("../../_icons/textWhiteSmall.png"); + --logo-icon-bar-color: url("../../_icons/iconWhiteSmall.svg"); + --logo-text-bar-color: url("../../_icons/textWhiteSmall.svg"); } .mainLightGreen, @@ -283,8 +283,8 @@ it can be safely elided. This looks quite pleasant on this theme. */ .mainOrange, .mainDeepOrange { --text-with-main-color: #000000; - --logo-icon-bar-color: url("../../_icons/iconBlackSmall.png"); - --logo-text-bar-color: url("../../_icons/textBlackSmall.png"); + --logo-icon-bar-color: url("../../_icons/iconBlackSmall.svg"); + --logo-text-bar-color: url("../../_icons/textBlackSmall.svg"); } .mainRed { @@ -388,16 +388,16 @@ it can be safely elided. This looks quite pleasant on this theme. */ .mainDraculaOrange, .mainDraculaYellow { --text-with-main-color: #282A36; - --logo-icon-bar-color: url("../../_icons/iconDraculaDarkSmall.png"); - --logo-text-bar-color: url("../../_icons/textDraculaDarkSmall.png"); + --logo-icon-bar-color: url("../../_icons/iconDraculaDarkSmall.svg"); + --logo-text-bar-color: url("../../_icons/textDraculaDarkSmall.svg"); } .mainDraculaPink, .mainDraculaPurple, .mainDraculaRed { --text-with-main-color: #F8F8F2; - --logo-icon-bar-color: url("../../_icons/iconDraculaLightSmall.png"); - --logo-text-bar-color: url("../../_icons/textDraculaLightSmall.png"); + --logo-icon-bar-color: url("../../_icons/iconDraculaLightSmall.svg"); + --logo-text-bar-color: url("../../_icons/textDraculaLightSmall.svg"); } .mainDraculaCyan { @@ -457,8 +457,8 @@ it can be safely elided. This looks quite pleasant on this theme. */ .mainCatppuccinMochaBlue, .mainCatppuccinMochaLavender { --text-with-main-color: #1e1e2e; - --logo-icon-bar-color: url("../../_icons/iconCatppuccinMochaDarkSmall.png"); - --logo-text-bar-color: url("../../_icons/textCatppuccinMochaDarkSmall.png"); + --logo-icon-bar-color: url("../../_icons/iconCatppuccinMochaDarkSmall.svg"); + --logo-text-bar-color: url("../../_icons/textCatppuccinMochaDarkSmall.svg"); } .mainCatppuccinMochaRosewater { From ae8e0ce96df3660d654ead49b095eb7c94de7321 Mon Sep 17 00:00:00 2001 From: Mehul Sweeti Agrawal <148802868+msagr@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:59:09 +0530 Subject: [PATCH 13/19] Add more options to default playback rate menu (#4880) * make slider precise as per playback speed * Resolve type error in Default Playback * Adjust the min value of playback slider in accordance to selected interval * Fix min value of Default Playback --- src/renderer/components/player-settings/player-settings.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/player-settings/player-settings.vue b/src/renderer/components/player-settings/player-settings.vue index d751b136a0f2d..95b8cd2cbfa7b 100644 --- a/src/renderer/components/player-settings/player-settings.vue +++ b/src/renderer/components/player-settings/player-settings.vue @@ -119,9 +119,9 @@ From e65946294e487fcf8fbeb06175acb53f2b280df7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Apr 2024 16:47:36 +0000 Subject: [PATCH 14/19] Compressed Images (#4934) Co-authored-by: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com> --- _icons/iconColor.png | Bin 10124 -> 6578 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/_icons/iconColor.png b/_icons/iconColor.png index 235fee5bd611998abbb9b0423105c4cb2df17c62..300d763f9373d6bcf0f147b9438284c56d7085c9 100644 GIT binary patch literal 6578 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 literal 10124 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 From d49b3ba442a018d0fc25542e37d4c8641de89da5 Mon Sep 17 00:00:00 2001 From: Emma Date: Fri, 12 Apr 2024 13:05:06 -0400 Subject: [PATCH 15/19] Set max height for storyboards depending on window width (#4933) * Pick largest storyboard that is less than 90px tall * Reduce storyboard size when window inner width is below 500 * Reduce code * Only check the window inner width once to avoid messing with the video player internals for storyboards * Add back deleted line * Add back trailing comma --- src/renderer/views/Watch/Watch.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index ceec923690fd4..eca6f028af339 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -697,7 +697,11 @@ export default defineComponent({ } if (result.storyboards?.type === 'PlayerStoryboardSpec') { - this.createLocalStoryboardUrls(result.storyboards.boards.at(-1)) + let source = result.storyboards.boards + if (window.innerWidth < 500) { + source = source.filter((board) => board.thumbnail_height <= 90) + } + this.createLocalStoryboardUrls(source.at(-1)) } } From 49fe14c2c1be6f00b6100cbd39d946023199eecd Mon Sep 17 00:00:00 2001 From: Alexander Gabilondo Date: Sat, 13 Apr 2024 01:30:14 +0000 Subject: [PATCH 16/19] Translated using Weblate (Basque) Currently translated at 99.7% (816 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/ --- static/locales/eu.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/static/locales/eu.yaml b/static/locales/eu.yaml index eec7a47a542c8..0f5b798713746 100644 --- a/static/locales/eu.yaml +++ b/static/locales/eu.yaml @@ -126,7 +126,7 @@ User Playlists: batera migratuko dira.' Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 'Gordetako bideoak hutsik daude. Egin klik bideoaren izkinan den "gorde" botoian hemen zerrendatzeko' - Search bar placeholder: Bilatu Erreprodukzio-zerrendan + Search bar placeholder: Bilatu erreprodukzio-zerrendak Empty Search Message: Erreprodukzio-zerrenda honetan ez dago zure bilaketarekin bat datorren bideorik Remove Watched Videos: Kendu ikusitako bideoak @@ -223,6 +223,7 @@ User Playlists: Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Ziur ikusitako bideo guztiak erreprodukzio-zerrenda honetatik kendu nahi dituzula? Hau ezin da desegin. + Playlists with Matching Videos: Bat datozen bideoak dituzten erreprodukzio-zerrendak History: # On History Page History: 'Historikoa' @@ -1140,3 +1141,5 @@ Hashtag: honetan Ok: Ados Channel Hidden: '{channel} gehitu da kanalaren iragazkian' +Display Label: '{label}: {value}' +checkmark: ✓ From cf78c9a3b004738e180afa98ce70588bcae52d0d Mon Sep 17 00:00:00 2001 From: programutox Date: Sat, 13 Apr 2024 15:30:16 +0000 Subject: [PATCH 17/19] Translated using Weblate (Esperanto) Currently translated at 9.9% (81 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/ --- static/locales/eo.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/static/locales/eo.yaml b/static/locales/eo.yaml index 461dcf747df60..e3e94836f9100 100644 --- a/static/locales/eo.yaml +++ b/static/locales/eo.yaml @@ -113,3 +113,7 @@ Search Bar: Clear Input: Klarigi enigon Are you sure you want to open this link?: Ĉu vi certe volas malfermi ĉi-ligilon? Open New Window: Malfermi novan fenestron +Reload: Reŝarĝi +Preferences: Agordoj +New Window: Nova Fenestro +Go to page: Iri al {page} From 372bc1bdd104f18d8c80ff6853603f40f1cec026 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sat, 13 Apr 2024 18:34:30 +0000 Subject: [PATCH 18/19] Translated using Weblate (Croatian) Currently translated at 100.0% (818 of 818 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 1bcb4c36bd6f4..960aa293f2d68 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -1184,3 +1184,5 @@ Age Restricted: This channel is age restricted: Ovaj je dobno ograničeni kanal This video is age restricted: Ovaj je dobno ograničeni video Close Banner: Zatvori natpis +Display Label: '{label}: {value}' +checkmark: ✓ From bb7d90be0585ce12894cf246319863eeef2a2c5b Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sun, 14 Apr 2024 15:16:55 +0200 Subject: [PATCH 19/19] Fix imports of the "electron" module that are missing an Electron guard (#4935) --- _scripts/webpack.web.config.js | 1 - .../download-settings/download-settings.js | 20 +-- .../proxy-settings/proxy-settings.js | 11 +- .../theme-settings/theme-settings.js | 14 +- src/renderer/store/modules/settings.js | 153 +++++++++--------- src/renderer/store/modules/utils.js | 6 +- 6 files changed, 108 insertions(+), 97 deletions(-) diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index 0badc63a748d9..c06679910433c 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -25,7 +25,6 @@ const config = { filename: '[name].js', }, externals: { - electron: '{}', 'youtubei.js': '{}' }, module: { diff --git a/src/renderer/components/download-settings/download-settings.js b/src/renderer/components/download-settings/download-settings.js index de00756b4be8b..a0ad9efa067da 100644 --- a/src/renderer/components/download-settings/download-settings.js +++ b/src/renderer/components/download-settings/download-settings.js @@ -6,7 +6,6 @@ import FtSelect from '../ft-select/ft-select.vue' import FtButton from '../ft-button/ft-button.vue' import FtInput from '../ft-input/ft-input.vue' import { mapActions } from 'vuex' -import { ipcRenderer } from 'electron' import { IpcChannels } from '../../../constants' export default defineComponent({ @@ -48,16 +47,19 @@ export default defineComponent({ handleDownloadingSettingChange: function (value) { this.updateDownloadAskPath(value) }, - chooseDownloadingFolder: async function() { - // only use with electron - const folder = await ipcRenderer.invoke( - IpcChannels.SHOW_OPEN_DIALOG, - { properties: ['openDirectory'] } - ) + chooseDownloadingFolder: async function () { + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') - if (folder.canceled) return + const folder = await ipcRenderer.invoke( + IpcChannels.SHOW_OPEN_DIALOG, + { properties: ['openDirectory'] } + ) - this.updateDownloadFolderPath(folder.filePaths[0]) + if (folder.canceled) return + + this.updateDownloadFolderPath(folder.filePaths[0]) + } }, ...mapActions([ 'updateDownloadAskPath', diff --git a/src/renderer/components/proxy-settings/proxy-settings.js b/src/renderer/components/proxy-settings/proxy-settings.js index c9a0139b953c3..b985c39d60d29 100644 --- a/src/renderer/components/proxy-settings/proxy-settings.js +++ b/src/renderer/components/proxy-settings/proxy-settings.js @@ -8,7 +8,6 @@ import FtInput from '../ft-input/ft-input.vue' import FtLoader from '../ft-loader/ft-loader.vue' import FtFlexBox from '../ft-flex-box/ft-flex-box.vue' -import { ipcRenderer } from 'electron' import debounce from 'lodash.debounce' import { IpcChannels } from '../../../constants' @@ -125,11 +124,17 @@ export default defineComponent({ }, enableProxy: function () { - ipcRenderer.send(IpcChannels.ENABLE_PROXY, this.proxyUrl) + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + ipcRenderer.send(IpcChannels.ENABLE_PROXY, this.proxyUrl) + } }, disableProxy: function () { - ipcRenderer.send(IpcChannels.DISABLE_PROXY) + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + ipcRenderer.send(IpcChannels.DISABLE_PROXY) + } this.dataAvailable = false this.proxyIp = '' diff --git a/src/renderer/components/theme-settings/theme-settings.js b/src/renderer/components/theme-settings/theme-settings.js index d53bf2f92784a..5e9d268b60e4e 100644 --- a/src/renderer/components/theme-settings/theme-settings.js +++ b/src/renderer/components/theme-settings/theme-settings.js @@ -146,12 +146,14 @@ export default defineComponent({ return } - this.updateDisableSmoothScrolling( - this.disableSmoothScrollingToggleValue - ).then(() => { - const { ipcRenderer } = require('electron') - ipcRenderer.send('relaunchRequest') - }) + if (process.env.IS_ELECTRON) { + this.updateDisableSmoothScrolling( + this.disableSmoothScrollingToggleValue + ).then(() => { + const { ipcRenderer } = require('electron') + ipcRenderer.send('relaunchRequest') + }) + } }, ...mapActions([ diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index 7aa40616c2f12..cb07106db14d8 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -471,101 +471,102 @@ const customActions = { // Should be a root action, but we'll tolerate setupListenersToSyncWindows: ({ commit, dispatch, getters }) => { - // Already known to be Electron, no need to check - const { ipcRenderer } = require('electron') - - ipcRenderer.on(IpcChannels.SYNC_SETTINGS, (_, { event, data }) => { - switch (event) { - case SyncEvents.GENERAL.UPSERT: - if (getters.settingHasSideEffects(data._id)) { - dispatch(defaultSideEffectsTriggerId(data._id), data.value) - } + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') - commit(defaultMutationId(data._id), data.value) - break + ipcRenderer.on(IpcChannels.SYNC_SETTINGS, (_, { event, data }) => { + switch (event) { + case SyncEvents.GENERAL.UPSERT: + if (getters.settingHasSideEffects(data._id)) { + dispatch(defaultSideEffectsTriggerId(data._id), data.value) + } - default: - console.error('settings: invalid sync event received') - } - }) + commit(defaultMutationId(data._id), data.value) + break - ipcRenderer.on(IpcChannels.SYNC_HISTORY, (_, { event, data }) => { - switch (event) { - case SyncEvents.GENERAL.UPSERT: - commit('upsertToHistoryCache', data) - break + default: + console.error('settings: invalid sync event received') + } + }) - case SyncEvents.HISTORY.UPDATE_WATCH_PROGRESS: - commit('updateRecordWatchProgressInHistoryCache', data) - break + ipcRenderer.on(IpcChannels.SYNC_HISTORY, (_, { event, data }) => { + switch (event) { + case SyncEvents.GENERAL.UPSERT: + commit('upsertToHistoryCache', data) + break - case SyncEvents.HISTORY.UPDATE_PLAYLIST: - commit('updateRecordLastViewedPlaylistIdInHistoryCache', data) - break + case SyncEvents.HISTORY.UPDATE_WATCH_PROGRESS: + commit('updateRecordWatchProgressInHistoryCache', data) + break - case SyncEvents.GENERAL.DELETE: - commit('removeFromHistoryCacheById', data) - break + case SyncEvents.HISTORY.UPDATE_PLAYLIST: + commit('updateRecordLastViewedPlaylistIdInHistoryCache', data) + break - case SyncEvents.GENERAL.DELETE_ALL: - commit('setHistoryCacheSorted', []) - commit('setHistoryCacheById', {}) - break + case SyncEvents.GENERAL.DELETE: + commit('removeFromHistoryCacheById', data) + break - default: - console.error('history: invalid sync event received') - } - }) + case SyncEvents.GENERAL.DELETE_ALL: + commit('setHistoryCacheSorted', []) + commit('setHistoryCacheById', {}) + break - ipcRenderer.on(IpcChannels.SYNC_PROFILES, (_, { event, data }) => { - switch (event) { - case SyncEvents.GENERAL.CREATE: - commit('addProfileToList', data) - break + default: + console.error('history: invalid sync event received') + } + }) - case SyncEvents.GENERAL.UPSERT: - commit('upsertProfileToList', data) - break + ipcRenderer.on(IpcChannels.SYNC_PROFILES, (_, { event, data }) => { + switch (event) { + case SyncEvents.GENERAL.CREATE: + commit('addProfileToList', data) + break - case SyncEvents.GENERAL.DELETE: - commit('removeProfileFromList', data) - break + case SyncEvents.GENERAL.UPSERT: + commit('upsertProfileToList', data) + break - default: - console.error('profiles: invalid sync event received') - } - }) + case SyncEvents.GENERAL.DELETE: + commit('removeProfileFromList', data) + break - ipcRenderer.on(IpcChannels.SYNC_PLAYLISTS, (_, { event, data }) => { - switch (event) { - case SyncEvents.GENERAL.CREATE: - commit('addPlaylists', data) - break + default: + console.error('profiles: invalid sync event received') + } + }) - case SyncEvents.GENERAL.DELETE: - commit('removePlaylist', data) - break + ipcRenderer.on(IpcChannels.SYNC_PLAYLISTS, (_, { event, data }) => { + switch (event) { + case SyncEvents.GENERAL.CREATE: + commit('addPlaylists', data) + break - case SyncEvents.GENERAL.UPSERT: - commit('upsertPlaylistToList', data) - break + case SyncEvents.GENERAL.DELETE: + commit('removePlaylist', data) + break - case SyncEvents.PLAYLISTS.UPSERT_VIDEO: - commit('addVideo', data) - break + case SyncEvents.GENERAL.UPSERT: + commit('upsertPlaylistToList', data) + break - case SyncEvents.PLAYLISTS.UPSERT_VIDEOS: - commit('addVideos', data) - break + case SyncEvents.PLAYLISTS.UPSERT_VIDEO: + commit('addVideo', data) + break - case SyncEvents.PLAYLISTS.DELETE_VIDEO: - commit('removeVideo', data) - break + case SyncEvents.PLAYLISTS.UPSERT_VIDEOS: + commit('addVideos', data) + break - default: - console.error('playlists: invalid sync event received') - } - }) + case SyncEvents.PLAYLISTS.DELETE_VIDEO: + commit('removeVideo', data) + break + + default: + console.error('playlists: invalid sync event received') + } + }) + } } } diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index 0a52ca7c44aef..c99290f20f0d3 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -728,8 +728,10 @@ const actions = { showToast(i18n.t('Video.External Player.OpeningTemplate', { videoOrPlaylist, externalPlayer })) - const { ipcRenderer } = require('electron') - ipcRenderer.send(IpcChannels.OPEN_IN_EXTERNAL_PLAYER, { executable, args }) + if (process.env.IS_ELECTRON) { + const { ipcRenderer } = require('electron') + ipcRenderer.send(IpcChannels.OPEN_IN_EXTERNAL_PLAYER, { executable, args }) + } } }