Radio ROKS и Kiss FM (TavR Media, хосты radioroks.ua / kissfm.ua) недоступны с российских IP без VPN. Теперь для пользователей из РФ они полностью скрыты — и сами станции (везде, где используется список), и их чипы-категории. Страна определяется по IP (api.country.is → ipapi.co; при VPN вернёт страну выходного узла, тогда станции доступны и НЕ скрываются), с фолбэком на страну SIM/сети/локали устройства, если IP-сервис недоступен (в РФ часто заблокирован). Код страны кэшируется (DataStore). Фильтр в GetStationsUseCase (combine со страной) + чипы в StationsViewModel. id 741 «Радио РОКС» (stream.roks.com) — российская, под правило не попадает. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
24 lines
979 B
Kotlin
24 lines
979 B
Kotlin
package com.radiola.domain.usecase
|
|
|
|
import com.radiola.domain.geo.GeoBlock
|
|
import com.radiola.domain.model.Station
|
|
import com.radiola.domain.repository.RegionRepository
|
|
import com.radiola.domain.repository.StationRepository
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.combine
|
|
import javax.inject.Inject
|
|
|
|
class GetStationsUseCase @Inject constructor(
|
|
private val stationRepository: StationRepository,
|
|
private val regionRepository: RegionRepository
|
|
) {
|
|
// Гео-фильтр: для пользователей из РФ убираем недоступные украинские станции
|
|
// (Radio ROKS, Kiss FM) из всех мест, где используется список станций.
|
|
operator fun invoke(): Flow<List<Station>> = combine(
|
|
stationRepository.getStations(),
|
|
regionRepository.countryCode()
|
|
) { stations, country ->
|
|
stations.filterNot { GeoBlock.isHidden(it, country) }
|
|
}
|
|
}
|