From 5a31383d78e659fc28fdf6bffe6cd569f8b1d8a4 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 23 Jan 2025 18:38:12 +1300 Subject: [PATCH] Merged logic for orientation and status bar --- materialious/src/lib/Player.svelte | 25 +++++++++++++++++-------- materialious/src/lib/misc.ts | 1 - 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index 28b74cac..5c7d5b2a 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -410,23 +410,32 @@ } if (Capacitor.getPlatform() === 'android') { + let initialFullscreen = true; + + const videoFormats = data.video.adaptiveFormats.filter((format) => + format.type.startsWith('video/') + ); + + originalOrigination = await ScreenOrientation.orientation(); + player.addEventListener('fullscreen-change', async (event: FullscreenChangeEvent) => { + // A bit of a hack to fix Android automatically + // fullscreening when opening a video. + if (initialFullscreen) { + player.exitFullscreen(); + initialFullscreen = false; + return; + } + if (event.detail) { // Ensure bar color is black while in fullscreen await StatusBar.setBackgroundColor({ color: '#000000' }); } else { await setStatusBarColor(); } - }); - } - if (get(playerAndroidLockOrientation)) { - const videoFormats = data.video.adaptiveFormats.filter((format) => - format.type.startsWith('video/') - ); + if (!get(playerAndroidLockOrientation)) return; - originalOrigination = await ScreenOrientation.orientation(); - player.addEventListener('fullscreen-change', async (event: FullscreenChangeEvent) => { if (event.detail && videoFormats[0].resolution) { const widthHeight = videoFormats[0].resolution.split('x'); diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts index 052fb463..5e8a42ee 100644 --- a/materialious/src/lib/misc.ts +++ b/materialious/src/lib/misc.ts @@ -292,7 +292,6 @@ export function ensureNoTrailingSlash(url: any): string { return url.endsWith('/') ? url.slice(0, -1) : url; } - export async function setStatusBarColor() { if (Capacitor.getPlatform() === 'android') { await StatusBar.setBackgroundColor({