From 9953165415791daa537fb888340a3f5486ec18f2 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Wed, 9 Jun 2021 21:58:13 +0200 Subject: [PATCH] Add AddServerViewModel and checkServer --- .../jellyfin/fragments/AddServerFragment.kt | 17 ++++++++++---- .../jellyfin/viewmodels/AddServerViewModel.kt | 23 +++++++++++++++++++ .../viewmodels/AddServerViewModelFactory.kt | 18 +++++++++++++++ .../main/res/layout/fragment_add_server.xml | 6 +++++ 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt create mode 100644 app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt 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 9d21b723..2fd2a219 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt @@ -5,22 +5,29 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider import androidx.navigation.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() { - private var _binding: FragmentAddServerBinding? = null - private val binding get() = _binding!! - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - _binding = FragmentAddServerBinding.inflate(inflater, container, false) + val application = requireNotNull(this.activity).application + val binding = FragmentAddServerBinding.inflate(inflater) + val viewModelFactory = AddServerViewModelFactory(application) + val viewModel = ViewModelProvider(this, viewModelFactory).get(AddServerViewModel::class.java) + + binding.lifecycleOwner = this + binding.viewModel = viewModel binding.buttonConnect.setOnClickListener { v: View -> - v.findNavController().navigate(R.id.action_addServerFragment_to_loginFragment) + viewModel.checkServer(binding.editTextServerAddress.text.toString()) + //v.findNavController().navigate(R.id.action_addServerFragment_to_loginFragment) } return binding.root diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt new file mode 100644 index 00000000..31a2fe5e --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt @@ -0,0 +1,23 @@ +package dev.jdtech.jellyfin.viewmodels + +import android.app.Application +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import dev.jdtech.jellyfin.api.JellyfinApi +import kotlinx.coroutines.launch +import org.jellyfin.sdk.api.client.exception.ApiClientException +import java.lang.Exception + +class AddServerViewModel(val application: Application) : ViewModel() { + fun checkServer(baseUrl: String) { + viewModelScope.launch { + val jellyfinApi = JellyfinApi.newInstance(application, baseUrl) + try { + jellyfinApi.systemApi.getPublicSystemInfo() + } catch (e: Exception) { + Log.e("JellyfinApi", "${e.message}") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt new file mode 100644 index 00000000..0d7aaa11 --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModelFactory.kt @@ -0,0 +1,18 @@ +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/res/layout/fragment_add_server.xml b/app/src/main/res/layout/fragment_add_server.xml index f38467e4..7a45e9ff 100644 --- a/app/src/main/res/layout/fragment_add_server.xml +++ b/app/src/main/res/layout/fragment_add_server.xml @@ -4,6 +4,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> + + + +