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 a2b0a820..f5c505e8 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt @@ -10,18 +10,15 @@ import androidx.navigation.fragment.findNavController import dev.jdtech.jellyfin.R import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding import dev.jdtech.jellyfin.viewmodels.AddServerViewModel -import dev.jdtech.jellyfin.viewmodels.AddServerViewModelFactory class AddServerFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - val application = requireNotNull(this.activity).application val binding = FragmentAddServerBinding.inflate(inflater) - val viewModelFactory = AddServerViewModelFactory(application) val viewModel = - ViewModelProvider(this, viewModelFactory).get(AddServerViewModel::class.java) + ViewModelProvider(this).get(AddServerViewModel::class.java) binding.lifecycleOwner = this binding.viewModel = viewModel 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 0943a3fb..aa3382de 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt @@ -9,7 +9,6 @@ import androidx.lifecycle.ViewModelProvider import dev.jdtech.jellyfin.adapters.ViewListAdapter import dev.jdtech.jellyfin.databinding.FragmentHomeBinding import dev.jdtech.jellyfin.viewmodels.HomeViewModel -import dev.jdtech.jellyfin.viewmodels.HomeViewModelFactory class HomeFragment : Fragment() { override fun onCreateView( @@ -17,10 +16,8 @@ class HomeFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View { - val application = requireNotNull(this.activity).application val binding = FragmentHomeBinding.inflate(inflater, container, false) - val viewModelFactory = HomeViewModelFactory(application) - val viewModel = ViewModelProvider(this, viewModelFactory).get(HomeViewModel::class.java) + val viewModel = ViewModelProvider(this).get(HomeViewModel::class.java) binding.lifecycleOwner = this binding.viewModel = viewModel 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 1e0c1f13..ec338fc2 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt @@ -10,17 +10,14 @@ import androidx.navigation.fragment.findNavController import dev.jdtech.jellyfin.R import dev.jdtech.jellyfin.databinding.FragmentLoginBinding import dev.jdtech.jellyfin.viewmodels.LoginViewModel -import dev.jdtech.jellyfin.viewmodels.LoginViewModelFactory class LoginFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - val application = requireNotNull(this.activity).application val binding = FragmentLoginBinding.inflate(inflater) - val viewModelFactory = LoginViewModelFactory(application) - val viewModel = ViewModelProvider(this, viewModelFactory).get(LoginViewModel::class.java) + val viewModel = ViewModelProvider(this).get(LoginViewModel::class.java) binding.lifecycleOwner = this binding.viewModel = viewModel 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 2dbf70b7..ad02f9d1 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt @@ -11,7 +11,6 @@ import dev.jdtech.jellyfin.R import dev.jdtech.jellyfin.adapters.CollectionListAdapter import dev.jdtech.jellyfin.databinding.FragmentMediaBinding import dev.jdtech.jellyfin.viewmodels.MediaViewModel -import dev.jdtech.jellyfin.viewmodels.MediaViewModelFactory class MediaFragment : Fragment() { override fun onCreateView( @@ -19,10 +18,8 @@ class MediaFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View { - val application = requireNotNull(this.activity).application val binding = FragmentMediaBinding.inflate(inflater, container, false) - val viewModelFactory = MediaViewModelFactory(application) - val viewModel = ViewModelProvider(this, viewModelFactory).get(MediaViewModel::class.java) + val viewModel = ViewModelProvider(this).get(MediaViewModel::class.java) binding.lifecycleOwner = this binding.viewModel = viewModel 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 6bb1f668..bc176c8d 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt @@ -2,10 +2,7 @@ package dev.jdtech.jellyfin.viewmodels import android.app.Application import android.util.Log -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.database.Server import dev.jdtech.jellyfin.database.ServerDatabase @@ -14,7 +11,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.lang.Exception -class AddServerViewModel(val application: Application) : ViewModel() { +class AddServerViewModel(application: Application) : AndroidViewModel(application) { private val database = ServerDatabase.getInstance(application).serverDatabaseDao private val _navigateToLogin = MutableLiveData() @@ -23,6 +20,8 @@ class AddServerViewModel(val application: Application) : ViewModel() { private val _error = MutableLiveData() val error: LiveData = _error + private val app = application + /** * Run multiple check on the server before continuing: * @@ -33,7 +32,7 @@ class AddServerViewModel(val application: Application) : ViewModel() { _error.value = null viewModelScope.launch { - val jellyfinApi = JellyfinApi.newInstance(application, baseUrl) + val jellyfinApi = JellyfinApi.newInstance(app, baseUrl) try { val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo() Log.i("AddServerViewModel", "Remote server: ${publicSystemInfo.id}") diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt deleted file mode 100644 index 0d7aaa11..00000000 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.jdtech.jellyfin.viewmodels - -import android.app.Application -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import java.lang.IllegalArgumentException - -class AddServerViewModelFactory( - private val application: Application -) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T { - if (modelClass.isAssignableFrom(AddServerViewModel::class.java)) { - @Suppress("UNCHECKED_CAST") - return AddServerViewModel(application) as T - } - throw IllegalArgumentException("Unknown ViewModel class") - } -} \ No newline at end of file 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 b713d2b2..21ebee4b 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt @@ -13,7 +13,7 @@ import java.util.* class HomeViewModel( application: Application -) : ViewModel() { +) : AndroidViewModel(application) { private val jellyfinApi = JellyfinApi.getInstance(application, "") private val _views = MutableLiveData>() diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModelFactory.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModelFactory.kt deleted file mode 100644 index 4b1e6bde..00000000 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModelFactory.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.jdtech.jellyfin.viewmodels - -import android.app.Application -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import java.lang.IllegalArgumentException - -class HomeViewModelFactory( - private val application: Application -) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T { - if (modelClass.isAssignableFrom(HomeViewModel::class.java)) { - @Suppress("UNCHECKED_CAST") - return HomeViewModel(application) as T - } - throw IllegalArgumentException("Unknown ViewModel class") - } -} \ No newline at end of file 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 a31705b8..729cd2e1 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt @@ -2,10 +2,7 @@ package dev.jdtech.jellyfin.viewmodels import android.app.Application import android.util.Log -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.database.Server import dev.jdtech.jellyfin.database.ServerDatabase @@ -15,7 +12,7 @@ import kotlinx.coroutines.withContext import org.jellyfin.sdk.model.api.AuthenticateUserByName import java.lang.Exception -class LoginViewModel(application: Application) : ViewModel() { +class LoginViewModel(application: Application) : AndroidViewModel(application) { // 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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModelFactory.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModelFactory.kt deleted file mode 100644 index c8beead0..00000000 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModelFactory.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.jdtech.jellyfin.viewmodels - -import android.app.Application -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import java.lang.IllegalArgumentException - -class LoginViewModelFactory( - private val application: Application -) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T { - if (modelClass.isAssignableFrom(LoginViewModel::class.java)) { - @Suppress("UNCHECKED_CAST") - return LoginViewModel(application) as T - } - throw IllegalArgumentException("Unknown ViewModel class") - } -} \ No newline at end of file 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 4af78f72..2682908b 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModel.kt @@ -1,10 +1,7 @@ package dev.jdtech.jellyfin.viewmodels import android.app.Application -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import dev.jdtech.jellyfin.api.JellyfinApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -13,12 +10,12 @@ import org.jellyfin.sdk.model.api.BaseItemDto import java.util.* class MediaViewModel( - val application: Application -) : ViewModel() { + application: Application +) : AndroidViewModel(application) { private val jellyfinApi = JellyfinApi.getInstance(application, "") private val _collections = MutableLiveData>() - val collections : LiveData> = _collections + val collections: LiveData> = _collections private val _finishedLoading = MutableLiveData() val finishedLoading: LiveData = _finishedLoading @@ -31,7 +28,7 @@ class MediaViewModel( } } - private suspend fun getItems(userId: UUID) : List? { + private suspend fun getItems(userId: UUID): List? { var items: List? withContext(Dispatchers.IO) { items = jellyfinApi.itemsApi.getItems(userId).content.items diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModelFactory.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModelFactory.kt deleted file mode 100644 index 3229a73d..00000000 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaViewModelFactory.kt +++ /dev/null @@ -1,18 +0,0 @@ -package dev.jdtech.jellyfin.viewmodels - -import android.app.Application -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import java.lang.IllegalArgumentException - -class MediaViewModelFactory( - private val application: Application -) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T { - if (modelClass.isAssignableFrom(MediaViewModel::class.java)) { - @Suppress("UNCHECKED_CAST") - return MediaViewModel(application) as T - } - throw IllegalArgumentException("Unknown ViewModel class") - } -} \ No newline at end of file