fix(player): матч now-playing по имени станции (обложки DFM в плеере)

Плеер искал now-playing по числовому id станции, а у локальных станций (DFM)
id не совпадает с каталожным → API-путь с обложкой не срабатывал, плеер падал
на ICY из потока (без обложки). Теперь getNowPlaying матчит по id, затем по
имени станции (как карточки). DFM-обложки появляются и в плеере.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-03 14:36:39 +03:00
parent 77772789bb
commit 72ecbae866
4 changed files with 14 additions and 7 deletions

View File

@@ -27,9 +27,16 @@ class NowPlayingRepositoryImpl @Inject constructor(
// Сокет (реалтайм, приоритет) + REST-поллинг с нашего бэкенда.
// Оба источника ключуются по числовому id станции (как в каталоге),
// поэтому корректно сопоставляются с station.id плеера.
override fun getNowPlaying(stationId: Int): Flow<Track?> {
return combine(socketClient.nowPlaying, _nowPlaying) { socketMap, restMap ->
socketMap[stationId] ?: restMap[stationId]
override fun getNowPlaying(stationId: Int, stationName: String): Flow<Track?> {
val nameKey = stationName.trim().lowercase()
return combine(
socketClient.nowPlaying,
_nowPlaying,
_nowPlayingByName
) { socketMap, restMap, byName ->
// Числовой id (сокет/REST), затем фолбэк по имени — id локальных
// станций (DFM и др.) не совпадает с каталожным, имя совпадает.
socketMap[stationId] ?: restMap[stationId] ?: byName[nameKey]
}
}