Подтягиваем обогащённые данные с бэкенда (Discogs): genre/styles/label/year в чартах и детальной странице. - ChartEntry/TrackStats + DTO: добавлены genre/styles/label/year - RadiolaApi: getCharts(?genre=), новый getGenres() - ChartsViewModel: состояние выбранного жанра + список жанров, перезагрузка - ChartsScreen: ряд чипов-фильтров по жанру (Все + жанры), жанр/стили чипами и «Лейбл · Год» на детальной - убран демо-fallback (SAMPLE_CHARTS) — бэкенд живой Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
844 B
Kotlin
31 lines
844 B
Kotlin
package com.radiola.domain.model
|
|
|
|
/** Период чарта, выбираемый пользователем. */
|
|
enum class ChartPeriod(val apiValue: String, val label: String) {
|
|
DAY("day", "День"),
|
|
WEEK("week", "Неделя"),
|
|
MONTH("month", "Месяц"),
|
|
ALL("all", "Всё время")
|
|
}
|
|
|
|
/** Направление движения позиции в чарте. */
|
|
enum class ChartTrend { UP, DOWN, NEW, SAME }
|
|
|
|
/** Одна позиция в чарте. */
|
|
data class ChartEntry(
|
|
val rank: Int,
|
|
val trackId: String,
|
|
val artist: String,
|
|
val song: String,
|
|
val coverUrl: String?,
|
|
val genre: String?,
|
|
val styles: List<String>,
|
|
val label: String?,
|
|
val year: Int?,
|
|
val plays: Int,
|
|
val stationsCount: Int,
|
|
val likes: Int,
|
|
val prevRank: Int?,
|
|
val trend: ChartTrend
|
|
)
|