Fix default quality not showing in player settings

This commit is contained in:
WardPearce
2026-02-22 16:36:17 +13:00
parent 2994095122
commit a0dbeba910
2 changed files with 21 additions and 27 deletions
@@ -55,7 +55,7 @@
import { addToast } from '$lib/components/Toast.svelte';
import { getPublicEnv, isMobile, isUnrestrictedPlatform, isYTBackend } from '$lib/misc';
import { isOwnBackend } from '$lib/shared';
import Settings from './settings/Settings.svelte';
import Settings, { setActiveAudioTrack, setActiveVideoTrack } from './settings/Settings.svelte';
import CaptionSettings from './settings/CaptionSettings.svelte';
import Airplay from './settings/Airplay.svelte';
import Pip from './settings/Pip.svelte';
@@ -244,6 +244,9 @@
restoreDefaultLanguage(player);
updateVideoPlayerHeight();
setActiveAudioTrack(player);
setActiveVideoTrack(player);
if ($playerCCByDefault) {
toggleSubtitles(player);
}
@@ -1,42 +1,33 @@
<script lang="ts" module>
import type shaka from 'shaka-player/dist/shaka-player.ui';
let playerCurrentVideoTrack: shaka.extern.VideoTrack | undefined = $state(undefined);
let playerCurrentAudioTrack: shaka.extern.AudioTrack | undefined = $state(undefined);
export function setActiveVideoTrack(player: shaka.Player) {
const videoTracks = player.getVideoTracks();
playerCurrentVideoTrack = videoTracks.find((track) => track.active);
}
export function setActiveAudioTrack(player: shaka.Player) {
const audioTracks = player.getAudioTracks();
playerCurrentAudioTrack = audioTracks.find((track) => track.active);
}
</script>
<script lang="ts">
import { _ } from '$lib/i18n';
import type shaka from 'shaka-player/dist/shaka-player.ui';
import { SvelteSet } from 'svelte/reactivity';
import ISO6391 from 'iso-639-1';
import { playerAlwaysLoopStore } from '$lib/store';
import { playbackRates } from '$lib/player/index';
import { onMount } from 'svelte';
let { player, playerElement }: { player: shaka.Player; playerElement: HTMLMediaElement } =
$props();
let playerSettings: 'quality' | 'speed' | 'language' | 'caption' | 'root' = $state('root');
let playerCurrentVideoTrack: shaka.extern.VideoTrack | undefined = $state(undefined);
let playerCurrentAudioTrack: shaka.extern.AudioTrack | undefined = $state(undefined);
let playerLoop = $state($playerAlwaysLoopStore);
onMount(() => {
player.addEventListener('loaded', () => {
setActiveVideoTrack();
setActiveAudioTrack();
});
player.addEventListener('trackschanged', () => {
setActiveVideoTrack();
setActiveAudioTrack();
});
});
function setActiveVideoTrack() {
const videoTracks = player.getVideoTracks();
playerCurrentVideoTrack = videoTracks.find((track) => track.active);
}
function setActiveAudioTrack() {
const audioTracks = player.getAudioTracks();
playerCurrentAudioTrack = audioTracks.find((track) => track.active);
}
function filterUniqueAudioTracks(tracks: shaka.extern.AudioTrack[]): shaka.extern.AudioTrack[] {
const uniqueTracks: shaka.extern.AudioTrack[] = [];
const seen = new SvelteSet<string>();