diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index b554f294..538ed8c6 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -25,6 +25,7 @@ authStore, darkModeStore, instanceStore, + isAndroidTvStore, playerAndroidLockOrientation, playerAutoplayNextByDefaultStore, playerAutoPlayStore, @@ -50,7 +51,6 @@ import { patchYoutubeJs } from '$lib/patches/youtubejs'; import { playbackRates } from '$lib/const'; import { EndTimeElement } from '$lib/shaka-elements/endTime'; - import androidTv from '$lib/android/plugins/androidTv'; import { loadEntirePlaylist } from '$lib/playlist'; import { goto } from '$app/navigation'; import { unsafeRandomItem } from '$lib/misc'; @@ -72,12 +72,10 @@ }: Props = $props(); let snackBarAlert = $state(''); - let playerPosSet = false; let originalOrigination: ScreenOrientationResult | undefined; let watchProgressTimeout: NodeJS.Timeout; let playerElementResizeObserver: ResizeObserver | undefined; let showVideoRetry = $state(false); - let isAndroidTv = $state(false); let player: shaka.Player; let shakaUi: shaka.ui.Overlay; @@ -200,7 +198,7 @@ if ( Capacitor.getPlatform() === 'android' && data.video.adaptiveFormats.length > 0 && - !isAndroidTv + !$isAndroidTvStore ) { const videoFormats = data.video.adaptiveFormats.filter((format) => format.type.startsWith('video/') @@ -413,8 +411,6 @@ return; } - isAndroidTv = (await androidTv.isAndroidTv()).value; - HttpFetchPlugin.cacheManager.clearCache(); player = new shaka.Player(); @@ -586,7 +582,7 @@ setChapterMarkers(); - if (isAndroidTv) { + if ($isAndroidTvStore) { Mousetrap.bind('enter', () => { if (playerElement?.paused) { playerElement?.play(); @@ -660,9 +656,6 @@ }); async function loadPlayerPos() { - if (playerPosSet) return; - playerPosSet = true; - if (loadTimeFromUrl($page)) return; let toSetTime = 0; @@ -686,11 +679,11 @@ } function savePlayerPos() { - if (data.video.hlsUrl) return; + if (data.video.liveNow) return; const synciousEnabled = $synciousStore && $synciousInstanceStore && $authStore; - if ($playerSavePlaybackPositionStore && player && playerElement && playerElement.currentTime) { + if ($playerSavePlaybackPositionStore && playerElement) { if ( playerElement.currentTime < playerElement.duration - 10 && playerElement.currentTime > 10 @@ -715,7 +708,7 @@ } onDestroy(async () => { - if (Capacitor.getPlatform() === 'android') { + if (Capacitor.getPlatform() === 'android' && !$isAndroidTvStore) { if (originalOrigination) { await StatusBar.setOverlaysWebView({ overlay: false }); await StatusBar.show(); @@ -725,7 +718,7 @@ } } - Mousetrap.unbind(['enter', 'left', 'right']); + Mousetrap.unbind(['enter', 'left', 'right', 'space', 'c', 'f', 'shift+left', 'shift+right']); if (watchProgressTimeout) { clearTimeout(watchProgressTimeout); @@ -735,7 +728,6 @@ savePlayerPos(); } catch (error) {} - playerPosSet = false; HttpFetchPlugin.cacheManager.clearCache(); if (playerElementResizeObserver) { @@ -760,8 +752,8 @@