diff --git a/README.md b/README.md index 5891f842..45eadaef 100644 --- a/README.md +++ b/README.md @@ -204,8 +204,11 @@ Help [translate Materialious via Weblate](https://toolate.othing.xyz/projects/ma ## Mobile -## Android TV -![Preview of subscriptions page on Android TV](./previews/android-tv.png) +## Android TV Home +![Preview of subscriptions page on Android TV](./previews/android-tv-home.png) + +## Android TV Player +![Preview of player on Android TV](./previews/android-tv-player.png) ## Player ![Preview of player](./previews/player-preview.png) diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index 38e393be..8050e272 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 131 - versionName "1.9.14" + versionCode 132 + versionName "1.9.15" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/materialious.metainfo.xml b/materialious/electron/materialious.metainfo.xml index 635024d5..641674c3 100644 --- a/materialious/electron/materialious.metainfo.xml +++ b/materialious/electron/materialious.metainfo.xml @@ -66,7 +66,11 @@ - + + + https://github.com/Materialious/Materialious/releases/tag/1.9.15 + + https://github.com/Materialious/Materialious/releases/tag/1.9.14 diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 378445e5..7e954db0 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.9.14", + "version": "1.9.15", "description": "Modern material design for Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index 2e1b9501..d98a65e3 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.9.14", + "version": "1.9.15", "private": true, "scripts": { "dev": "vite dev", diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index f9b3e932..99a48735 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -585,7 +585,7 @@ playerElement.addEventListener('ended', async () => { if (!data.playlistId) { if ($playerAutoplayNextByDefaultStore) { - goto(`/watch/${data.video.recommendedVideos[0].videoId}`); + goto(`/${$isAndroidTvStore ? 'tv' : 'watch'}/${data.video.recommendedVideos[0].videoId}`); } return; @@ -628,7 +628,9 @@ }); } - goto(`/watch/${goToVideo.videoId}?playlist=${data.playlistId}`); + goto( + `/${$isAndroidTvStore ? 'tv' : 'watch'}/${goToVideo.videoId}?playlist=${data.playlistId}` + ); } }); diff --git a/materialious/src/routes/(app)/+layout.svelte b/materialious/src/routes/(app)/+layout.svelte index fc293ddf..a907d4eb 100644 --- a/materialious/src/routes/(app)/+layout.svelte +++ b/materialious/src/routes/(app)/+layout.svelte @@ -32,10 +32,9 @@ import ui from 'beercss'; import 'material-dynamic-colors'; import { onMount } from 'svelte'; - import { _, initI18n } from '$lib/i18n'; + import { _ } from '$lib/i18n'; import { get } from 'svelte/store'; import { pwaInfo } from 'virtual:pwa-info'; - import androidTv from '$lib/android/plugins/androidTv'; import Mousetrap from 'mousetrap'; let { children } = $props(); @@ -186,8 +185,6 @@ } } - $isAndroidTvStore = (await androidTv.isAndroidTv()).value; - if ($isAndroidTvStore) { const topContent = document.getElementById('top-content') as HTMLElement; Mousetrap.bind('down', () => { diff --git a/materialious/src/routes/(app)/channel/[slug]/+page.svelte b/materialious/src/routes/(app)/channel/[slug]/+page.svelte index f7b43944..7ac38def 100644 --- a/materialious/src/routes/(app)/channel/[slug]/+page.svelte +++ b/materialious/src/routes/(app)/channel/[slug]/+page.svelte @@ -7,7 +7,7 @@ import VideoList from '$lib/components/VideoList.svelte'; import { getBestThumbnail, proxyGoogleImage } from '$lib/images'; import { cleanNumber } from '$lib/numbers'; - import { authStore, interfaceLowBandwidthMode } from '$lib/store'; + import { authStore, interfaceLowBandwidthMode, isAndroidTvStore } from '$lib/store'; import { Clipboard } from '@capacitor/clipboard'; import { Capacitor } from '@capacitor/core'; import { onMount } from 'svelte'; @@ -131,39 +131,41 @@ -
- -
+ + + + {/if} diff --git a/materialious/src/routes/(app)/playlist/[slug]/+page.svelte b/materialious/src/routes/(app)/playlist/[slug]/+page.svelte index c62a1730..af108a89 100644 --- a/materialious/src/routes/(app)/playlist/[slug]/+page.svelte +++ b/materialious/src/routes/(app)/playlist/[slug]/+page.svelte @@ -58,36 +58,38 @@
- + + + {/if} {#if data.playlist.videos} diff --git a/materialious/src/routes/(no-layout)/tv/[slug]/+page@.svelte b/materialious/src/routes/(no-layout)/tv/[slug]/+page@.svelte index c9f9c16b..da6fa5f5 100644 --- a/materialious/src/routes/(no-layout)/tv/[slug]/+page@.svelte +++ b/materialious/src/routes/(no-layout)/tv/[slug]/+page@.svelte @@ -127,25 +127,27 @@ {/each} {/if} -
{$_('recommendedVideos')}
-
- {#each data.video.recommendedVideos as recommendedVideo} - -
{ - showInfo = false; - }} - role="presentation" - style="height: 100%;" - class="no-padding" - > - {#key recommendedVideo.videoId} - - {/key} -
-
- {/each} -
+ {#if data.video.recommendedVideos.length > 0} +
{$_('recommendedVideos')}
+
+ {#each data.video.recommendedVideos as recommendedVideo} + +
{ + showInfo = false; + }} + role="presentation" + style="height: 100%;" + class="no-padding" + > + {#key recommendedVideo.videoId} + + {/key} +
+
+ {/each} +
+ {/if} {/if} diff --git a/materialious/src/routes/+layout.ts b/materialious/src/routes/+layout.ts index 1f6b127a..9cc9c450 100644 --- a/materialious/src/routes/+layout.ts +++ b/materialious/src/routes/+layout.ts @@ -1,10 +1,11 @@ import { browser } from '$app/environment'; import { goto } from '$app/navigation'; +import androidTv from '$lib/android/plugins/androidTv'; import { getResolveUrl } from '$lib/api'; import '$lib/i18n'; // Import to initialize. Important :) import { initI18n } from '$lib/i18n'; import { getPages } from '$lib/navPages.js'; -import { authStore, interfaceDefaultPage } from '$lib/store.js'; +import { authStore, interfaceDefaultPage, isAndroidTvStore } from '$lib/store.js'; import { get } from 'svelte/store'; export const ssr = false; @@ -14,6 +15,8 @@ export async function load({ url }) { await initI18n(); } + isAndroidTvStore.set((await androidTv.isAndroidTv()).value); + if (url.pathname.startsWith('/@')) { const username = url.pathname.split('/')[1]; diff --git a/previews/android-tv-home.png b/previews/android-tv-home.png new file mode 100644 index 00000000..7e53f861 Binary files /dev/null and b/previews/android-tv-home.png differ diff --git a/previews/android-tv-player.png b/previews/android-tv-player.png new file mode 100644 index 00000000..d0bad781 Binary files /dev/null and b/previews/android-tv-player.png differ diff --git a/previews/android-tv.png b/previews/android-tv.png deleted file mode 100644 index fa3752ef..00000000 Binary files a/previews/android-tv.png and /dev/null differ diff --git a/update_versions.py b/update_versions.py index 010f4d0c..d0173705 100644 --- a/update_versions.py +++ b/update_versions.py @@ -3,7 +3,7 @@ import os import re from datetime import datetime -LATEST_VERSION = "1.9.14" +LATEST_VERSION = "1.9.15" RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")