From cbc5c31066e0e217e5895c20663ec83fa911ff5e Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Wed, 16 Jun 2021 12:22:18 +0200 Subject: [PATCH] Navigate to Main Activity from Login Fragment --- .../dev/jdtech/jellyfin/fragments/LoginFragment.kt | 9 +++++++++ .../jdtech/jellyfin/viewmodels/LoginViewModel.kt | 13 +++++++++++++ app/src/main/res/navigation/setup_navigation.xml | 11 ++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) 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 3633ea6b..1e0c1f13 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LoginFragment.kt @@ -6,6 +6,8 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider +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 @@ -35,6 +37,13 @@ class LoginFragment : Fragment() { binding.editTextUsernameLayout.error = it }) + viewModel.navigateToMain.observe(viewLifecycleOwner, { + if (it) { + findNavController().navigate(R.id.action_loginFragment_to_mainActivity) + viewModel.doneNavigatingToMain() + } + }) + return binding.root } } \ 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 b9112888..a31705b8 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LoginViewModel.kt @@ -23,6 +23,10 @@ class LoginViewModel(application: Application) : ViewModel() { private val _error = MutableLiveData() val error: LiveData = _error + + private val _navigateToMain = MutableLiveData() + val navigateToMain: LiveData = _navigateToMain + /** * Send a authentication request to the Jellyfin server * @@ -49,6 +53,11 @@ class LoginViewModel(application: Application) : ViewModel() { authenticationResult.accessToken!! ) insert(server) + jellyfinApi.apply { + api.accessToken = authenticationResult.accessToken + userId = authenticationResult.user?.id + } + _navigateToMain.value = true } catch (e: Exception) { Log.e("LoginViewModel", "${e.message}") _error.value = e.message @@ -66,4 +75,8 @@ class LoginViewModel(application: Application) : ViewModel() { database.insert(server) } } + + fun doneNavigatingToMain() { + _navigateToMain.value = false + } } \ No newline at end of file diff --git a/app/src/main/res/navigation/setup_navigation.xml b/app/src/main/res/navigation/setup_navigation.xml index bce6d4c1..8af205de 100644 --- a/app/src/main/res/navigation/setup_navigation.xml +++ b/app/src/main/res/navigation/setup_navigation.xml @@ -8,7 +8,7 @@ android:id="@+id/addServerFragment" android:name="dev.jdtech.jellyfin.fragments.AddServerFragment" android:label="fragment_add_server" - tools:layout="@layout/fragment_add_server" > + tools:layout="@layout/fragment_add_server"> + tools:layout="@layout/fragment_login"> + + + android:label="MainActivity" + tools:layout="@layout/activity_main" /> \ No newline at end of file