From c37e561d7a29d1d6777d362fde77065fe6f18ff4 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Sun, 17 May 2026 21:17:11 +0200 Subject: [PATCH] feat: use backend mode preference and show toast on mode switch in nav --- static/player/episodes/nav.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/static/player/episodes/nav.ts b/static/player/episodes/nav.ts index 1fb770a..c68d3c0 100644 --- a/static/player/episodes/nav.ts +++ b/static/player/episodes/nav.ts @@ -46,7 +46,10 @@ export const goToNextEpisode = async (): Promise => { state.modeSources = data.mode_sources ?? {}; state.availableModes = data.available_modes ?? []; - const fallback = state.availableModes.find(m => state.modeSources[m]?.token); + const backendMode = typeof data.initial_mode === 'string' ? data.initial_mode : ''; + const fallback = state.modeSources[backendMode]?.token + ? backendMode + : state.availableModes.find(m => state.modeSources[m]?.token); if (!fallback) { sessionStorage.setItem('mal:autoplay-next', 'true'); const url = new URL(window.location.href); @@ -57,6 +60,11 @@ export const goToNextEpisode = async (): Promise => { state.currentEpisode = String(nextEp); state.currentMode = fallback; + if (data.mode_switched_from === 'dub' && fallback === 'sub') { + window.showToast?.({ + message: `Episode ${nextEp} is only available in sub, switched from dub.`, + }); + } // The progress reset is sent asynchronously, so do not trust the fetch to observe it first. state.startTimeSeconds = 0; state.container.dataset.currentEpisode = state.currentEpisode;