package com.github.apognu.otter.viewmodels import androidx.lifecycle.LiveData import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel import com.github.apognu.otter.models.domain.Album import com.github.apognu.otter.models.domain.Track import com.github.apognu.otter.repositories.AlbumsRepository import com.github.apognu.otter.repositories.TracksRepository class AlbumsViewModel(private val repository: AlbumsRepository, private val tracksRepository: TracksRepository, private val artistId: Int? = null) : ViewModel() { val albums: LiveData> by lazy { if (artistId == null) { Transformations.map(repository.all()) { it.map { album -> Album.fromDecoratedEntity(album) } } } else { Transformations.map(repository.ofArtist(artistId)) { it.map { album -> Album.fromDecoratedEntity(album) } } } } suspend fun tracks(): List { artistId?.let { val tracks = tracksRepository.ofArtistBlocking(artistId) return tracks.map { Track.fromDecoratedEntity(it) } } return listOf() } }