feat: WebSocket now-playing via Socket.IO from backend

This commit is contained in:
nk
2026-06-02 19:52:15 +03:00
parent a83672b455
commit bcb999ace9
1159 changed files with 15703 additions and 9918 deletions

View File

@@ -1,5 +1,6 @@
package com.radiola.data.repository
import com.radiola.data.remote.NowPlayingSocketClient
import com.radiola.data.remote.RecordApi
import com.radiola.data.remote.ApiMapper.toDomain
import com.radiola.domain.model.Track
@@ -10,16 +11,21 @@ import kotlinx.coroutines.flow.map
import javax.inject.Inject
class NowPlayingRepositoryImpl @Inject constructor(
private val api: RecordApi
private val api: RecordApi,
private val socketClient: NowPlayingSocketClient
) : NowPlayingRepository {
private val _nowPlaying = MutableStateFlow<Map<Int, Track>>(emptyMap())
override fun getNowPlaying(stationId: Int): Flow<Track?> {
return _nowPlaying.map { it[stationId] }
init {
socketClient.connect()
}
override fun getAllNowPlaying(): Flow<Map<Int, Track>> = _nowPlaying
override fun getNowPlaying(stationId: Int): Flow<Track?> {
return socketClient.nowPlaying.map { it[stationId] }
}
override fun getAllNowPlaying(): Flow<Map<Int, Track>> = socketClient.nowPlaying
override suspend fun refreshNowPlaying(): Result<Unit> {
return try {