package dev.jdtech.jellyfin.viewmodels import androidx.lifecycle.* import dagger.hilt.android.lifecycle.HiltViewModel import dev.jdtech.jellyfin.repository.JellyfinRepository import kotlinx.coroutines.launch import org.jellyfin.sdk.model.api.BaseItemDto import timber.log.Timber import java.util.* import javax.inject.Inject @HiltViewModel class LibraryViewModel @Inject constructor(private val jellyfinRepository: JellyfinRepository) : ViewModel() { private val _items = MutableLiveData>() val items: LiveData> = _items private val _finishedLoading = MutableLiveData() val finishedLoading: LiveData = _finishedLoading private val _error = MutableLiveData() val error: LiveData = _error fun loadItems(parentId: UUID, libraryType: String?) { _error.value = null _finishedLoading.value = false Timber.d("$libraryType") val itemType = when (libraryType) { "movies" -> "Movie" "tvshows" -> "Series" else -> null } viewModelScope.launch { try { _items.value = jellyfinRepository.getItems( parentId, includeTypes = if (itemType != null) listOf(itemType) else null, recursive = true ) } catch (e: Exception) { Timber.e(e) _error.value = e.toString() } _finishedLoading.value = true } } }