package com.radiola.data.remote

import com.radiola.data.remote.dto.NowPlayingItemDto
import com.radiola.data.remote.dto.StationDto
import com.radiola.domain.model.Station
import com.radiola.domain.model.Track

object ApiMapper {

    fun StationDto.toDomain(): Station {
        val cover = iconFillColored ?: bgImageMobile ?: bgImage ?: ""
        // ВНИМАНИЕ: поле stream_128 у части станций Record указывает на мёртвый
        // маунт {prefix}64.aacp (404) — звука нет, хотя обложка/трек есть. Поле
        // stream_320 (= {prefix}96.aacp) живо у ВСЕХ станций. Поэтому 320 первым.
        val stream = stream320 ?: stream128 ?: streamHls ?: "https://air.radiorecord.ru:805/${prefix}_128"
        return Station(
            id = id,
            name = name,
            prefix = prefix,
            streamUrl = stream,
            coverUrl = cover,
            genre = tooltip ?: "",
            // Жанры-категории станции лежат в "genre"; "tags" обычно пуст. Берём
            // оба, чтобы работали жанровые чипы Record (Лето и пр.).
            tags = (genres + tags).map { it.name }.distinct(),
            sortOrder = sort
        )
    }

    fun NowPlayingItemDto.toDomain(): Track {
        return Track(
            artist = track.artist,
            song = track.song,
            coverUrl = track.image600 ?: track.image100,
            stationName = ""
        )
    }
}
