Change how ViewModels get created
This commit is contained in:
parent
4342448c1e
commit
5e6099de93
10 changed files with 29 additions and 20 deletions
|
@ -1,7 +1,8 @@
|
||||||
plugins {
|
plugins {
|
||||||
id 'com.android.application'
|
id 'com.android.application'
|
||||||
id 'kotlin-android'
|
id 'kotlin-android'
|
||||||
id 'org.jetbrains.kotlin.kapt'
|
id 'kotlin-parcelize'
|
||||||
|
id 'kotlin-kapt'
|
||||||
id 'androidx.navigation.safeargs.kotlin'
|
id 'androidx.navigation.safeargs.kotlin'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.R
|
||||||
|
@ -12,13 +13,14 @@ import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
|
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
|
||||||
|
|
||||||
class AddServerFragment : Fragment() {
|
class AddServerFragment : Fragment() {
|
||||||
|
|
||||||
|
private val viewModel: AddServerViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val binding = FragmentAddServerBinding.inflate(inflater)
|
val binding = FragmentAddServerBinding.inflate(inflater)
|
||||||
val viewModel =
|
|
||||||
ViewModelProvider(this).get(AddServerViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -4,7 +4,7 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
|
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
|
||||||
|
@ -21,7 +21,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
): View {
|
): View {
|
||||||
val binding = EpisodeBottomSheetBinding.inflate(inflater, container, false)
|
val binding = EpisodeBottomSheetBinding.inflate(inflater, container, false)
|
||||||
val viewModelFactory = EpisodeBottomSheetViewModelFactory(requireNotNull(this.activity).application, args.episodeId)
|
val viewModelFactory = EpisodeBottomSheetViewModelFactory(requireNotNull(this.activity).application, args.episodeId)
|
||||||
val viewModel = ViewModelProvider(this, viewModelFactory).get(EpisodeBottomSheetViewModel::class.java)
|
val viewModel: EpisodeBottomSheetViewModel by viewModels { viewModelFactory }
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.R
|
||||||
|
@ -15,13 +16,15 @@ import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
|
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
|
||||||
|
|
||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
|
|
||||||
|
private val viewModel: HomeViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val binding = FragmentHomeBinding.inflate(inflater, container, false)
|
val binding = FragmentHomeBinding.inflate(inflater, container, false)
|
||||||
val viewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package dev.jdtech.jellyfin.fragments
|
package dev.jdtech.jellyfin.fragments
|
||||||
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
|
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
|
||||||
|
@ -16,7 +16,6 @@ import dev.jdtech.jellyfin.viewmodels.LibraryViewModelFactory
|
||||||
class LibraryFragment : Fragment() {
|
class LibraryFragment : Fragment() {
|
||||||
|
|
||||||
private lateinit var binding: FragmentLibraryBinding
|
private lateinit var binding: FragmentLibraryBinding
|
||||||
private lateinit var viewModel: LibraryViewModel
|
|
||||||
|
|
||||||
private val args: LibraryFragmentArgs by navArgs()
|
private val args: LibraryFragmentArgs by navArgs()
|
||||||
|
|
||||||
|
@ -35,7 +34,7 @@ class LibraryFragment : Fragment() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
val viewModelFactory =
|
val viewModelFactory =
|
||||||
LibraryViewModelFactory(requireNotNull(this.activity).application, args.libraryId)
|
LibraryViewModelFactory(requireNotNull(this.activity).application, args.libraryId)
|
||||||
viewModel = ViewModelProvider(this, viewModelFactory).get(LibraryViewModel::class.java)
|
val viewModel: LibraryViewModel by viewModels { viewModelFactory }
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
binding.itemsRecyclerView.adapter =
|
binding.itemsRecyclerView.adapter =
|
||||||
ViewItemListAdapter(ViewItemListAdapter.OnClickListener {
|
ViewItemListAdapter(ViewItemListAdapter.OnClickListener {
|
||||||
|
|
|
@ -5,19 +5,21 @@ import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.R
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
|
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
|
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
|
||||||
|
|
||||||
class LoginFragment : Fragment() {
|
class LoginFragment : Fragment() {
|
||||||
|
|
||||||
|
private val viewModel: LoginViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val binding = FragmentLoginBinding.inflate(inflater)
|
val binding = FragmentLoginBinding.inflate(inflater)
|
||||||
val viewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
||||||
|
@ -12,13 +13,15 @@ import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
|
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
|
||||||
|
|
||||||
class MediaFragment : Fragment() {
|
class MediaFragment : Fragment() {
|
||||||
|
|
||||||
|
private val viewModel: MediaViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val binding = FragmentMediaBinding.inflate(inflater, container, false)
|
val binding = FragmentMediaBinding.inflate(inflater, container, false)
|
||||||
val viewModel = ViewModelProvider(this).get(MediaViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -7,7 +7,7 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import dev.jdtech.jellyfin.adapters.PersonListAdapter
|
import dev.jdtech.jellyfin.adapters.PersonListAdapter
|
||||||
|
@ -19,7 +19,6 @@ import dev.jdtech.jellyfin.viewmodels.MediaInfoViewModelFactory
|
||||||
class MediaInfoFragment : Fragment() {
|
class MediaInfoFragment : Fragment() {
|
||||||
|
|
||||||
private lateinit var binding: FragmentMediaInfoBinding
|
private lateinit var binding: FragmentMediaInfoBinding
|
||||||
private lateinit var viewModel: MediaInfoViewModel
|
|
||||||
|
|
||||||
private val args: MediaInfoFragmentArgs by navArgs()
|
private val args: MediaInfoFragmentArgs by navArgs()
|
||||||
|
|
||||||
|
@ -39,7 +38,8 @@ class MediaInfoFragment : Fragment() {
|
||||||
|
|
||||||
val viewModelFactory =
|
val viewModelFactory =
|
||||||
MediaInfoViewModelFactory(requireNotNull(this.activity).application, args.itemId)
|
MediaInfoViewModelFactory(requireNotNull(this.activity).application, args.itemId)
|
||||||
viewModel = ViewModelProvider(this, viewModelFactory).get(MediaInfoViewModel::class.java)
|
val viewModel: MediaInfoViewModel by viewModels { viewModelFactory }
|
||||||
|
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.item.observe(viewLifecycleOwner, { item ->
|
viewModel.item.observe(viewLifecycleOwner, { item ->
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package dev.jdtech.jellyfin.fragments
|
package dev.jdtech.jellyfin.fragments
|
||||||
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import dev.jdtech.jellyfin.adapters.EpisodeListAdapter
|
import dev.jdtech.jellyfin.adapters.EpisodeListAdapter
|
||||||
|
@ -15,7 +15,6 @@ import dev.jdtech.jellyfin.viewmodels.SeasonViewModelFactory
|
||||||
|
|
||||||
class SeasonFragment : Fragment() {
|
class SeasonFragment : Fragment() {
|
||||||
|
|
||||||
private lateinit var viewModel: SeasonViewModel
|
|
||||||
private lateinit var binding: FragmentSeasonBinding
|
private lateinit var binding: FragmentSeasonBinding
|
||||||
|
|
||||||
private val args: SeasonFragmentArgs by navArgs()
|
private val args: SeasonFragmentArgs by navArgs()
|
||||||
|
@ -36,7 +35,7 @@ class SeasonFragment : Fragment() {
|
||||||
args.seriesId,
|
args.seriesId,
|
||||||
args.seasonId
|
args.seasonId
|
||||||
)
|
)
|
||||||
viewModel = ViewModelProvider(this, viewModelFactory).get(SeasonViewModel::class.java)
|
val viewModel: SeasonViewModel by viewModels { viewModelFactory }
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
binding.episodesRecyclerView.adapter =
|
binding.episodesRecyclerView.adapter =
|
||||||
EpisodeListAdapter(EpisodeListAdapter.OnClickListener {
|
EpisodeListAdapter(EpisodeListAdapter.OnClickListener {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.R
|
||||||
|
@ -28,8 +29,7 @@ class ServerSelectFragment : Fragment() {
|
||||||
val dataSource = ServerDatabase.getInstance(application).serverDatabaseDao
|
val dataSource = ServerDatabase.getInstance(application).serverDatabaseDao
|
||||||
|
|
||||||
val viewModelFactory = ServerSelectViewModelFactory(dataSource, application)
|
val viewModelFactory = ServerSelectViewModelFactory(dataSource, application)
|
||||||
val viewModel =
|
val viewModel: ServerSelectViewModel by viewModels { viewModelFactory }
|
||||||
ViewModelProvider(this, viewModelFactory).get(ServerSelectViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
Loading…
Reference in a new issue