feat(player,core): remember the audio/subtitle track by name across episodes

A track picked on one episode now carries over to the next by its title as
well as its language, so e.g. "Signs & Songs" vs "Full" subtitles in the same
language stick. Catalog migration V8 adds the title columns; the Android
bridge keeps a stored title only while its language is unchanged.
This commit is contained in:
nvrl committed 2026-09-15 13:54:07 +02:00
1 parent ad24557588
commit d3c5f071fb
7 files changed
+312 -32

No files matched your search

+18 -4
View File
@@ -1127,13 +1127,27 @@ impl AndroidEngine {
title_key: String,
preferences: TrackPreferencesRecord,
) -> Result<(), BridgeError> {
let catalog = self.catalog.lock();
let existing = catalog
.title_track_prefs(&title_key)
.map_err(BridgeError::from_display)?
.unwrap_or_default();
let audio_language = normalized_language(preferences.audio_language);
let subtitle_language = normalized_language(preferences.subtitle_language);
// This bridge carries languages only. A track title stored beside one
// stays for as long as the language it was picked under does.
let preferences = TitleTrackPrefs {
audio_language: normalized_language(preferences.audio_language),
subtitle_language: normalized_language(preferences.subtitle_language),
audio_title: existing
.audio_title
.filter(|_| existing.audio_language == audio_language),
subtitle_title: existing
.subtitle_title
.filter(|_| existing.subtitle_language == subtitle_language),
audio_language,
subtitle_language,
subtitles: preferences.subtitles,
};
self.catalog
.lock()
catalog
.set_title_track_prefs(&title_key, &preferences)
.map_err(BridgeError::from_display)
}