ananas/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt
2021-08-23 16:42:00 +02:00

49 lines
No EOL
1.5 KiB
Kotlin

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<List<BaseItemDto>>()
val items: LiveData<List<BaseItemDto>> = _items
private val _finishedLoading = MutableLiveData<Boolean>()
val finishedLoading: LiveData<Boolean> = _finishedLoading
private val _error = MutableLiveData<String>()
val error: LiveData<String> = _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
}
}
}