Change multiple ViewModels to AndroidViewModels
This commit is contained in:
parent
0b663b1d17
commit
74eb9f30a5
12 changed files with 17 additions and 108 deletions
|
@ -10,18 +10,15 @@ import androidx.navigation.fragment.findNavController
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.R
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
|
import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
|
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
|
||||||
import dev.jdtech.jellyfin.viewmodels.AddServerViewModelFactory
|
|
||||||
|
|
||||||
class AddServerFragment : Fragment() {
|
class AddServerFragment : Fragment() {
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val application = requireNotNull(this.activity).application
|
|
||||||
val binding = FragmentAddServerBinding.inflate(inflater)
|
val binding = FragmentAddServerBinding.inflate(inflater)
|
||||||
val viewModelFactory = AddServerViewModelFactory(application)
|
|
||||||
val viewModel =
|
val viewModel =
|
||||||
ViewModelProvider(this, viewModelFactory).get(AddServerViewModel::class.java)
|
ViewModelProvider(this).get(AddServerViewModel::class.java)
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -9,7 +9,6 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import dev.jdtech.jellyfin.adapters.ViewListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewListAdapter
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
|
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
|
||||||
import dev.jdtech.jellyfin.viewmodels.HomeViewModelFactory
|
|
||||||
|
|
||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
@ -17,10 +16,8 @@ class HomeFragment : Fragment() {
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val application = requireNotNull(this.activity).application
|
|
||||||
val binding = FragmentHomeBinding.inflate(inflater, container, false)
|
val binding = FragmentHomeBinding.inflate(inflater, container, false)
|
||||||
val viewModelFactory = HomeViewModelFactory(application)
|
val viewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
|
||||||
val viewModel = ViewModelProvider(this, viewModelFactory).get(HomeViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -10,17 +10,14 @@ 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
|
||||||
import dev.jdtech.jellyfin.viewmodels.LoginViewModelFactory
|
|
||||||
|
|
||||||
class LoginFragment : Fragment() {
|
class LoginFragment : Fragment() {
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val application = requireNotNull(this.activity).application
|
|
||||||
val binding = FragmentLoginBinding.inflate(inflater)
|
val binding = FragmentLoginBinding.inflate(inflater)
|
||||||
val viewModelFactory = LoginViewModelFactory(application)
|
val viewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
|
||||||
val viewModel = ViewModelProvider(this, viewModelFactory).get(LoginViewModel::class.java)
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import dev.jdtech.jellyfin.R
|
||||||
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
|
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
|
||||||
import dev.jdtech.jellyfin.viewmodels.MediaViewModelFactory
|
|
||||||
|
|
||||||
class MediaFragment : Fragment() {
|
class MediaFragment : Fragment() {
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
@ -19,10 +18,8 @@ class MediaFragment : Fragment() {
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val application = requireNotNull(this.activity).application
|
|
||||||
val binding = FragmentMediaBinding.inflate(inflater, container, false)
|
val binding = FragmentMediaBinding.inflate(inflater, container, false)
|
||||||
val viewModelFactory = MediaViewModelFactory(application)
|
val viewModel = ViewModelProvider(this).get(MediaViewModel::class.java)
|
||||||
val viewModel = ViewModelProvider(this, viewModelFactory).get(MediaViewModel::class.java)
|
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
|
@ -2,10 +2,7 @@ package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
import dev.jdtech.jellyfin.database.Server
|
import dev.jdtech.jellyfin.database.Server
|
||||||
import dev.jdtech.jellyfin.database.ServerDatabase
|
import dev.jdtech.jellyfin.database.ServerDatabase
|
||||||
|
@ -14,7 +11,7 @@ import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.lang.Exception
|
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 database = ServerDatabase.getInstance(application).serverDatabaseDao
|
||||||
|
|
||||||
private val _navigateToLogin = MutableLiveData<Boolean>()
|
private val _navigateToLogin = MutableLiveData<Boolean>()
|
||||||
|
@ -23,6 +20,8 @@ class AddServerViewModel(val application: Application) : ViewModel() {
|
||||||
private val _error = MutableLiveData<String>()
|
private val _error = MutableLiveData<String>()
|
||||||
val error: LiveData<String> = _error
|
val error: LiveData<String> = _error
|
||||||
|
|
||||||
|
private val app = application
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run multiple check on the server before continuing:
|
* Run multiple check on the server before continuing:
|
||||||
*
|
*
|
||||||
|
@ -33,7 +32,7 @@ class AddServerViewModel(val application: Application) : ViewModel() {
|
||||||
_error.value = null
|
_error.value = null
|
||||||
|
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val jellyfinApi = JellyfinApi.newInstance(application, baseUrl)
|
val jellyfinApi = JellyfinApi.newInstance(app, baseUrl)
|
||||||
try {
|
try {
|
||||||
val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo()
|
val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo()
|
||||||
Log.i("AddServerViewModel", "Remote server: ${publicSystemInfo.id}")
|
Log.i("AddServerViewModel", "Remote server: ${publicSystemInfo.id}")
|
||||||
|
|
|
@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
|
|
||||||
if (modelClass.isAssignableFrom(AddServerViewModel::class.java)) {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
return AddServerViewModel(application) as T
|
|
||||||
}
|
|
||||||
throw IllegalArgumentException("Unknown ViewModel class")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,7 +13,7 @@ import java.util.*
|
||||||
|
|
||||||
class HomeViewModel(
|
class HomeViewModel(
|
||||||
application: Application
|
application: Application
|
||||||
) : ViewModel() {
|
) : AndroidViewModel(application) {
|
||||||
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
||||||
|
|
||||||
private val _views = MutableLiveData<List<View>>()
|
private val _views = MutableLiveData<List<View>>()
|
||||||
|
|
|
@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
|
|
||||||
if (modelClass.isAssignableFrom(HomeViewModel::class.java)) {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
return HomeViewModel(application) as T
|
|
||||||
}
|
|
||||||
throw IllegalArgumentException("Unknown ViewModel class")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,10 +2,7 @@ package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
import dev.jdtech.jellyfin.database.Server
|
import dev.jdtech.jellyfin.database.Server
|
||||||
import dev.jdtech.jellyfin.database.ServerDatabase
|
import dev.jdtech.jellyfin.database.ServerDatabase
|
||||||
|
@ -15,7 +12,7 @@ import kotlinx.coroutines.withContext
|
||||||
import org.jellyfin.sdk.model.api.AuthenticateUserByName
|
import org.jellyfin.sdk.model.api.AuthenticateUserByName
|
||||||
import java.lang.Exception
|
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.
|
// BaseUrl can be empty string because we want to get the existing instance.
|
||||||
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
||||||
private val database = ServerDatabase.getInstance(application).serverDatabaseDao
|
private val database = ServerDatabase.getInstance(application).serverDatabaseDao
|
||||||
|
|
|
@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
|
|
||||||
if (modelClass.isAssignableFrom(LoginViewModel::class.java)) {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
return LoginViewModel(application) as T
|
|
||||||
}
|
|
||||||
throw IllegalArgumentException("Unknown ViewModel class")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,7 @@
|
||||||
package dev.jdtech.jellyfin.viewmodels
|
package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -13,12 +10,12 @@ import org.jellyfin.sdk.model.api.BaseItemDto
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class MediaViewModel(
|
class MediaViewModel(
|
||||||
val application: Application
|
application: Application
|
||||||
) : ViewModel() {
|
) : AndroidViewModel(application) {
|
||||||
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
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
|
||||||
|
|
||||||
private val _finishedLoading = MutableLiveData<Boolean>()
|
private val _finishedLoading = MutableLiveData<Boolean>()
|
||||||
val finishedLoading: LiveData<Boolean> = _finishedLoading
|
val finishedLoading: LiveData<Boolean> = _finishedLoading
|
||||||
|
@ -31,7 +28,7 @@ class MediaViewModel(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getItems(userId: UUID) : List<BaseItemDto>? {
|
private suspend fun getItems(userId: UUID): List<BaseItemDto>? {
|
||||||
var items: List<BaseItemDto>?
|
var items: List<BaseItemDto>?
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
items = jellyfinApi.itemsApi.getItems(userId).content.items
|
items = jellyfinApi.itemsApi.getItems(userId).content.items
|
||||||
|
|
|
@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
|
|
||||||
if (modelClass.isAssignableFrom(MediaViewModel::class.java)) {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
return MediaViewModel(application) as T
|
|
||||||
}
|
|
||||||
throw IllegalArgumentException("Unknown ViewModel class")
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue