diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index d2db685e..4599a0c8 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -462,6 +462,8 @@ playerElement ); + await player.attach(playerElement); + shaka.ui.Controls.registerElement('end_time', { create: (parent: HTMLElement, controls: shaka.ui.Controls) => { return new EndTimeElement(parent, controls); @@ -494,13 +496,13 @@ updateSeekBarTheme(); - player.addEventListener('error', (event) => { + player?.addEventListener('error', (event) => { const error = (event as CustomEvent).detail as shaka.util.Error; console.error('Player error:', error); }); // Required to stop buttons from being still selected when fullscreening - document.addEventListener('fullscreenchange', async () => { + document?.addEventListener('fullscreenchange', async () => { const buttons = document.querySelectorAll('.shaka-controls-button-panel button'); buttons.forEach((button) => { // Reset the button's focus and active states @@ -509,9 +511,7 @@ }); }); - await player.attach(playerElement); - - playerElement.addEventListener('volumechange', saveVolumePreference); + playerElement?.addEventListener('volumechange', saveVolumePreference); await androidHandleRotate(); @@ -640,11 +640,11 @@ playerElement.currentTime += frameTime; }); - playerElement.addEventListener('pause', async () => { + playerElement?.addEventListener('pause', async () => { savePlayerPos(); }); - playerElement.addEventListener('ended', async () => { + playerElement?.addEventListener('ended', async () => { if (!data.playlistId) { if ($playerAutoplayNextByDefaultStore) { goto( diff --git a/materialious/src/lib/sabr/index.ts b/materialious/src/lib/sabr/index.ts index 8b86cf71..c65270cd 100644 --- a/materialious/src/lib/sabr/index.ts +++ b/materialious/src/lib/sabr/index.ts @@ -97,9 +97,9 @@ export function injectSABR( ) ); - playerElement.addEventListener('seeked', () => (lastSeekMs = Date.now())); + playerElement?.addEventListener('seeked', () => (lastSeekMs = Date.now())); - player.addEventListener('variantchanged', (event) => { + player?.addEventListener('variantchanged', (event) => { // Technically, all variant changes here are manual, given we don't handle ABR updates from the server. if (event.type !== 'variant') { lastManualFormatSelectionMs = Date.now();