From cb005e1cf6c4eb17dac92591b0409102e832bcc1 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Tue, 6 Jul 2021 11:39:35 +0200 Subject: [PATCH] Add more dependency injection --- .../jdtech/jellyfin/fragments/AddServerFragment.kt | 2 ++ .../fragments/EpisodeBottomSheetFragment.kt | 2 ++ .../dev/jdtech/jellyfin/fragments/HomeFragment.kt | 2 ++ .../jdtech/jellyfin/fragments/LibraryFragment.kt | 2 ++ .../dev/jdtech/jellyfin/fragments/LoginFragment.kt | 2 ++ .../dev/jdtech/jellyfin/fragments/MediaFragment.kt | 2 ++ .../jdtech/jellyfin/fragments/MediaInfoFragment.kt | 2 ++ .../dev/jdtech/jellyfin/fragments/SeasonFragment.kt | 2 ++ .../jellyfin/viewmodels/AddServerViewModel.kt | 7 ++++++- .../dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt | 13 ++++++++++--- .../jdtech/jellyfin/viewmodels/LoginViewModel.kt | 13 ++++++++++--- .../jdtech/jellyfin/viewmodels/MediaViewModel.kt | 9 +++++++-- 12 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt index bf1a150f..267f2650 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/EpisodeBottomSheetFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/EpisodeBottomSheetFragment.kt index 53e3f7e6..71f90819 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/EpisodeBottomSheetFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/EpisodeBottomSheetFragment.kt @@ -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() diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt index 55b41b6c..b9ae3b4c 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt index b31add2b..54d6fea7 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt index 5ef6ac28..f484cf2c 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt @@ -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() diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt index 75014455..2852438d 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt index 9bc7b896..4c3a91e2 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/SeasonFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/SeasonFragment.kt index 1f77784b..4a16375b 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/SeasonFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/SeasonFragment.kt @@ -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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt index bc176c8d..e3d3370c 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt @@ -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() diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt index ec90c707..bd37f072 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt @@ -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() 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)) diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt index 729cd2e1..c34d6e8a 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt @@ -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() val error: LiveData = _error diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt index 2682908b..b0d639a2 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt @@ -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>()