Add dependency injection to MediaViewModel

This commit is contained in:
Jarne Demeulemeester 2021-07-06 15:29:35 +02:00
parent 2c8ddaad24
commit 7908661b82
No known key found for this signature in database
GPG key ID: 60884A0C1EBA43E5
4 changed files with 7 additions and 20 deletions

View file

@ -30,7 +30,7 @@ class MediaFragment : Fragment() {
binding.viewModel = viewModel binding.viewModel = viewModel
binding.viewsRecyclerView.adapter = binding.viewsRecyclerView.adapter =
CollectionListAdapter(CollectionListAdapter.OnClickListener { library -> CollectionListAdapter(CollectionListAdapter.OnClickListener { library ->
nagivateToLibraryFragment(library) navigateToLibraryFragment(library)
}) })
viewModel.finishedLoading.observe(viewLifecycleOwner, { viewModel.finishedLoading.observe(viewLifecycleOwner, {
@ -42,7 +42,7 @@ class MediaFragment : Fragment() {
return binding.root return binding.root
} }
private fun nagivateToLibraryFragment(library: BaseItemDto) { private fun navigateToLibraryFragment(library: BaseItemDto) {
findNavController().navigate( findNavController().navigate(
MediaFragmentDirections.actionNavigationMediaToLibraryFragment( MediaFragmentDirections.actionNavigationMediaToLibraryFragment(
library.id, library.id,

View file

@ -6,7 +6,7 @@ import java.util.*
interface JellyfinRepository { interface JellyfinRepository {
suspend fun getItem(itemId: UUID): BaseItemDto suspend fun getItem(itemId: UUID): BaseItemDto
suspend fun getItems(parentId: UUID): List<BaseItemDto> suspend fun getItems(parentId: UUID? = null): List<BaseItemDto>
suspend fun getSeasons(seriesId: UUID): List<BaseItemDto> suspend fun getSeasons(seriesId: UUID): List<BaseItemDto>

View file

@ -15,7 +15,7 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep
return item return item
} }
override suspend fun getItems(parentId: UUID): List<BaseItemDto> { override suspend fun getItems(parentId: UUID?): List<BaseItemDto> {
val items: List<BaseItemDto> val items: List<BaseItemDto>
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
items = jellyfinApi.itemsApi.getItems( items = jellyfinApi.itemsApi.getItems(

View file

@ -1,23 +1,18 @@
package dev.jdtech.jellyfin.viewmodels package dev.jdtech.jellyfin.viewmodels
import android.app.Application
import androidx.lifecycle.* import androidx.lifecycle.*
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.repository.JellyfinRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jellyfin.sdk.model.api.BaseItemDto import org.jellyfin.sdk.model.api.BaseItemDto
import java.util.*
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class MediaViewModel class MediaViewModel
@Inject @Inject
constructor( constructor(
application: Application private val jellyfinRepository: JellyfinRepository
) : ViewModel() { ) : ViewModel() {
private val jellyfinApi = JellyfinApi.getInstance(application, "")
private val _collections = MutableLiveData<List<BaseItemDto>>() private val _collections = MutableLiveData<List<BaseItemDto>>()
val collections: LiveData<List<BaseItemDto>> = _collections val collections: LiveData<List<BaseItemDto>> = _collections
@ -27,17 +22,9 @@ constructor(
init { init {
viewModelScope.launch { viewModelScope.launch {
val items = getItems(jellyfinApi.userId!!) val items = jellyfinRepository.getItems()
_collections.value = items _collections.value = items
_finishedLoading.value = true _finishedLoading.value = true
} }
} }
private suspend fun getItems(userId: UUID): List<BaseItemDto>? {
var items: List<BaseItemDto>?
withContext(Dispatchers.IO) {
items = jellyfinApi.itemsApi.getItems(userId).content.items
}
return items
}
} }