From b8cb71a660d9de64eec62e49d71fff04bade7c33 Mon Sep 17 00:00:00 2001 From: Yash-Garg Date: Thu, 4 May 2023 13:35:37 +0530 Subject: [PATCH] fix: intent handling using listener and singleTop --- app/src/main/AndroidManifest.xml | 1 + .../dev/yashgarg/qbit/ui/server/ServerFragment.kt | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b659335..38d0cd86 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,7 @@ diff --git a/app/src/main/kotlin/dev/yashgarg/qbit/ui/server/ServerFragment.kt b/app/src/main/kotlin/dev/yashgarg/qbit/ui/server/ServerFragment.kt index 0775bc77..700d9395 100644 --- a/app/src/main/kotlin/dev/yashgarg/qbit/ui/server/ServerFragment.kt +++ b/app/src/main/kotlin/dev/yashgarg/qbit/ui/server/ServerFragment.kt @@ -7,6 +7,7 @@ import android.os.Bundle import android.util.Log import android.view.View import android.widget.Toast +import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResultListener import androidx.fragment.app.viewModels @@ -44,6 +45,11 @@ class ServerFragment : Fragment(R.layout.server_fragment) { exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + + activity?.addOnNewIntentListener { + val bundle = bundleOf(MainActivity.TORRENT_INTENT_KEY to it?.data.toString()) + handleAddIntent(bundle) + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -108,9 +114,9 @@ class ServerFragment : Fragment(R.layout.server_fragment) { } } - private fun handleAddIntent() { - val uri: String? = arguments?.getString(MainActivity.TORRENT_INTENT_KEY) - arguments?.clear() + private fun handleAddIntent(bundle: Bundle?) { + val uri: String? = (bundle ?: arguments)?.getString(MainActivity.TORRENT_INTENT_KEY) + (bundle ?: arguments)?.clear() if (!uri.isNullOrEmpty()) { when { linkValidator.isValid(uri) -> viewModel.addTorrentUrl(uri) @@ -207,7 +213,7 @@ class ServerFragment : Fragment(R.layout.server_fragment) { viewModel.intent .flowWithLifecycle(viewLifecycleOwner.lifecycle) - .onEach { handleAddIntent() } + .onEach { handleAddIntent(null) } .launchIn(viewLifecycleOwner.lifecycleScope) }