feat: WebSocket now-playing via Socket.IO from backend
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user