Add more dependency injection

This commit is contained in:
Jarne Demeulemeester 2021-07-06 11:39:35 +02:00
parent f460c25a92
commit cb005e1cf6
No known key found for this signature in database
GPG key ID: 60884A0C1EBA43E5
12 changed files with 49 additions and 9 deletions

View file

@ -7,9 +7,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
@AndroidEntryPoint
class AddServerFragment : Fragment() {
private lateinit var binding: FragmentAddServerBinding

View file

@ -7,10 +7,12 @@ import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.navArgs
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
import dev.jdtech.jellyfin.viewmodels.EpisodeBottomSheetViewModel
import dev.jdtech.jellyfin.viewmodels.EpisodeBottomSheetViewModelFactory
@AndroidEntryPoint
class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
private val args: EpisodeBottomSheetFragmentArgs by navArgs()

View file

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.R
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
@ -15,6 +16,7 @@ import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
import org.jellyfin.sdk.model.api.BaseItemDto
@AndroidEntryPoint
class HomeFragment : Fragment() {
private lateinit var binding: FragmentHomeBinding

View file

@ -8,12 +8,14 @@ import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding
import dev.jdtech.jellyfin.viewmodels.LibraryViewModelFactory
import org.jellyfin.sdk.model.api.BaseItemDto
@AndroidEntryPoint
class LibraryFragment : Fragment() {
private lateinit var binding: FragmentLibraryBinding

View file

@ -7,9 +7,11 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
@AndroidEntryPoint
class LoginFragment : Fragment() {
private val viewModel: LoginViewModel by viewModels()

View file

@ -7,11 +7,13 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
import org.jellyfin.sdk.model.api.BaseItemDto
@AndroidEntryPoint
class MediaFragment : Fragment() {
private lateinit var binding: FragmentMediaBinding

View file

@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.PersonListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.databinding.FragmentMediaInfoBinding
@ -17,6 +18,7 @@ import dev.jdtech.jellyfin.viewmodels.MediaInfoViewModel
import dev.jdtech.jellyfin.viewmodels.MediaInfoViewModelFactory
import org.jellyfin.sdk.model.api.BaseItemDto
@AndroidEntryPoint
class MediaInfoFragment : Fragment() {
private lateinit var binding: FragmentMediaInfoBinding

View file

@ -8,12 +8,14 @@ import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.EpisodeListAdapter
import dev.jdtech.jellyfin.databinding.FragmentSeasonBinding
import dev.jdtech.jellyfin.viewmodels.SeasonViewModel
import dev.jdtech.jellyfin.viewmodels.SeasonViewModelFactory
import org.jellyfin.sdk.model.api.BaseItemDto
@AndroidEntryPoint
class SeasonFragment : Fragment() {
private lateinit var binding: FragmentSeasonBinding

View file

@ -3,6 +3,7 @@ package dev.jdtech.jellyfin.viewmodels
import android.app.Application
import android.util.Log
import androidx.lifecycle.*
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.database.Server
import dev.jdtech.jellyfin.database.ServerDatabase
@ -10,8 +11,12 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.lang.Exception
import javax.inject.Inject
class AddServerViewModel(application: Application) : AndroidViewModel(application) {
@HiltViewModel
class AddServerViewModel
@Inject
constructor(application: Application) : ViewModel() {
private val database = ServerDatabase.getInstance(application).serverDatabaseDao
private val _navigateToLogin = MutableLiveData<Boolean>()

View file

@ -2,6 +2,8 @@ package dev.jdtech.jellyfin.viewmodels
import android.app.Application
import androidx.lifecycle.*
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.BaseApplication
import dev.jdtech.jellyfin.R
import dev.jdtech.jellyfin.adapters.HomeItem
import dev.jdtech.jellyfin.api.JellyfinApi
@ -13,10 +15,14 @@ import kotlinx.coroutines.withContext
import org.jellyfin.sdk.model.api.BaseItemDto
import org.jellyfin.sdk.model.api.BaseItemDtoQueryResult
import java.util.*
import javax.inject.Inject
class HomeViewModel(
@HiltViewModel
class HomeViewModel
@Inject
constructor(
application: Application
) : AndroidViewModel(application) {
) : ViewModel() {
private val jellyfinApi = JellyfinApi.getInstance(application, "")
private val continueWatchingString = application.resources.getString(R.string.continue_watching)
@ -56,7 +62,8 @@ class HomeViewModel(
val items = mutableListOf<HomeItem>()
val resumeItems = getResumeItems()
val resumeSection = HomeSection(UUID.randomUUID(), continueWatchingString, resumeItems)
val resumeSection =
HomeSection(UUID.randomUUID(), continueWatchingString, resumeItems)
if (!resumeItems.isNullOrEmpty()) {
items.add(HomeItem.Section(resumeSection))

View file

@ -3,19 +3,26 @@ package dev.jdtech.jellyfin.viewmodels
import android.app.Application
import android.util.Log
import androidx.lifecycle.*
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.database.Server
import dev.jdtech.jellyfin.database.ServerDatabase
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jellyfin.sdk.model.api.AuthenticateUserByName
import java.lang.Exception
import javax.inject.Inject
class LoginViewModel(application: Application) : AndroidViewModel(application) {
@HiltViewModel
class LoginViewModel
@Inject
constructor(
application: Application,
private val database: ServerDatabaseDao
) : ViewModel() {
// BaseUrl can be empty string because we want to get the existing instance.
private val jellyfinApi = JellyfinApi.getInstance(application, "")
private val database = ServerDatabase.getInstance(application).serverDatabaseDao
private val _error = MutableLiveData<String>()
val error: LiveData<String> = _error

View file

@ -2,16 +2,21 @@ package dev.jdtech.jellyfin.viewmodels
import android.app.Application
import androidx.lifecycle.*
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jellyfin.sdk.model.api.BaseItemDto
import java.util.*
import javax.inject.Inject
class MediaViewModel(
@HiltViewModel
class MediaViewModel
@Inject
constructor(
application: Application
) : AndroidViewModel(application) {
) : ViewModel() {
private val jellyfinApi = JellyfinApi.getInstance(application, "")
private val _collections = MutableLiveData<List<BaseItemDto>>()