From 8a951dd4c559d9b75e2f6279cd0ceb9d27e93de1 Mon Sep 17 00:00:00 2001 From: nk Date: Tue, 2 Jun 2026 22:23:37 +0300 Subject: [PATCH] =?UTF-8?q?fix(player):=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B8=20=D0=BE=D0=B1=D0=BB=D0=BE=D0=B6=D0=BA=D0=B8=20?= =?UTF-8?q?=E2=80=94=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20REST=20=D0=B8=20socket=20now-playing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit REST-поллинг (refreshNowPlaying -> api.getNowPlaying, 200 OK) писал данные в _nowPlaying, который нигде не читался; getNowPlaying() брал только сокет (пустой). Теперь getNowPlaying/getAllNowPlaying объединяют оба источника (socket ?: REST), поэтому название трека, обложка и deep-link сервисов работают. --- .../data/repository/NowPlayingRepositoryImpl.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/radiola/data/repository/NowPlayingRepositoryImpl.kt b/app/src/main/java/com/radiola/data/repository/NowPlayingRepositoryImpl.kt index 39729ff..06db09c 100644 --- a/app/src/main/java/com/radiola/data/repository/NowPlayingRepositoryImpl.kt +++ b/app/src/main/java/com/radiola/data/repository/NowPlayingRepositoryImpl.kt @@ -7,7 +7,7 @@ import com.radiola.domain.model.Track import com.radiola.domain.repository.NowPlayingRepository import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.combine import javax.inject.Inject class NowPlayingRepositoryImpl @Inject constructor( @@ -21,11 +21,19 @@ class NowPlayingRepositoryImpl @Inject constructor( socketClient.connect() } + // Объединяем два источника: сокет (реалтайм, приоритет) и REST-поллинг + // (refreshNowPlaying). Раньше REST-данные писались в _nowPlaying, но никем + // не читались — из-за этого трек и обложка не отображались. override fun getNowPlaying(stationId: Int): Flow { - return socketClient.nowPlaying.map { it[stationId] } + return combine(socketClient.nowPlaying, _nowPlaying) { socketMap, restMap -> + socketMap[stationId] ?: restMap[stationId] + } } - override fun getAllNowPlaying(): Flow> = socketClient.nowPlaying + override fun getAllNowPlaying(): Flow> = + combine(socketClient.nowPlaying, _nowPlaying) { socketMap, restMap -> + restMap + socketMap + } override suspend fun refreshNowPlaying(): Result { return try {