mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-21 03:02:59 -04:00
Refactored onBackPressed method with updated API
This commit introduces changes to refactor the usage of the deprecated `onBackPressed` method. The `onBackPressedDispatcher` API is now used instead. Here's a summary of the changes made: - Updated `AddNoteDialog.kt` and `NavigationHistoryDialog.kt` to handle the back button press on the navigation bar using the `onBackPressedDispatcher`. - Modified `CoreMainActivity.kt` to handle all back button press operations in the application using the `onBackPressedDispatcher`. - Updated `HelpFragment.kt` and `PageFragment.kt` to handle the back button press when the user clicks on the back arrow button in the toolbar. - Refactored the `onBackPressed` method in `SaveLanguagesAndFinish.kt` to use the updated API, and updated the corresponding test cases accordingly. These changes ensure that the `onBackPressed` functionality is updated to use the latest API, improving the readability and maintainability of the codebase.
This commit is contained in:
parent
7c1978a4f6
commit
529bd1bde1
@ -37,7 +37,7 @@ data class SaveLanguagesAndFinish(
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
activity.onBackPressed()
|
||||
activity.onBackPressedDispatcher.onBackPressed()
|
||||
}, Throwable::printStackTrace)
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,9 @@
|
||||
|
||||
package org.kiwix.kiwixmobile.language.viewmodel
|
||||
|
||||
import androidx.activity.OnBackPressedDispatcher
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
@ -35,11 +37,14 @@ class SaveLanguagesAndFinishTest {
|
||||
setScheduler(Schedulers.trampoline())
|
||||
val languageDao = mockk<NewLanguagesDao>()
|
||||
val activity = mockk<AppCompatActivity>()
|
||||
val onBackPressedDispatcher = mockk<OnBackPressedDispatcher>()
|
||||
every { activity.onBackPressedDispatcher } returns onBackPressedDispatcher
|
||||
every { onBackPressedDispatcher.onBackPressed() } answers { }
|
||||
val languages = listOf<Language>()
|
||||
SaveLanguagesAndFinish(languages, languageDao).invokeWith(activity)
|
||||
verify {
|
||||
languageDao.insert(languages)
|
||||
activity.onBackPressed()
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
resetSchedulers()
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ abstract class HelpFragment : BaseFragment() {
|
||||
val toolbar: Toolbar? = fragmentHelpBinding?.root?.findViewById(R.id.toolbar)
|
||||
toolbar?.apply {
|
||||
activity.setSupportActionBar(this)
|
||||
setNavigationOnClickListener { requireActivity().onBackPressed() }
|
||||
setNavigationOnClickListener { requireActivity().onBackPressedDispatcher.onBackPressed() }
|
||||
}
|
||||
activity.supportActionBar?.let {
|
||||
it.setDisplayHomeAsUpEnabled(true)
|
||||
|
@ -33,6 +33,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
@ -181,14 +182,21 @@ class AddNoteDialog : DialogFragment() {
|
||||
private fun getTextAfterLastSlashWithoutExtension(path: String): String =
|
||||
path.substringAfterLast('/', "").substringBeforeLast('.')
|
||||
|
||||
// Override onBackPressed() to respond to user pressing 'Back' button on navigation bar
|
||||
// Add onBackPressedCallBack to respond to user pressing 'Back' button on navigation bar
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return object : Dialog(requireContext(), theme) {
|
||||
override fun onBackPressed() {
|
||||
val dialog = Dialog(requireContext(), theme)
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner, onBackPressedCallBack
|
||||
)
|
||||
return dialog
|
||||
}
|
||||
|
||||
private val onBackPressedCallBack =
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
exitAddNoteDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun exitAddNoteDialog() {
|
||||
if (noteEdited) {
|
||||
@ -465,6 +473,7 @@ class AddNoteDialog : DialogFragment() {
|
||||
super.onDestroyView()
|
||||
mainRepositoryActions.dispose()
|
||||
dialogNoteAddNoteBinding = null
|
||||
onBackPressedCallBack.remove()
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
|
@ -229,7 +229,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
||||
return
|
||||
}
|
||||
if (activeFragments().filterIsInstance<FragmentActivityExtensions>().isEmpty()) {
|
||||
return super.onBackPressed()
|
||||
return super.getOnBackPressedDispatcher().onBackPressed()
|
||||
}
|
||||
activeFragments().filterIsInstance<FragmentActivityExtensions>().forEach {
|
||||
if (it.onBackPressed(this) == FragmentActivityExtensions.Super.ShouldCall) {
|
||||
@ -240,7 +240,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
||||
drawerToggle = null
|
||||
finish()
|
||||
} else {
|
||||
super.onBackPressed()
|
||||
super.getOnBackPressedDispatcher().onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv
|
||||
val toolbar = fragmentPageBinding?.root?.findViewById<Toolbar>(R.id.toolbar)
|
||||
toolbar?.apply {
|
||||
activity.setSupportActionBar(this)
|
||||
setNavigationOnClickListener { requireActivity().onBackPressed() }
|
||||
setNavigationOnClickListener { requireActivity().onBackPressedDispatcher.onBackPressed() }
|
||||
}
|
||||
activity.supportActionBar?.apply {
|
||||
setDisplayHomeAsUpEnabled(true)
|
||||
|
@ -23,6 +23,7 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
@ -128,14 +129,21 @@ class NavigationHistoryDialog(
|
||||
navigationHistoryClickListener.clearHistory()
|
||||
}
|
||||
|
||||
// Override onBackPressed() to respond to user pressing 'Back' button on navigation bar
|
||||
// Add onBackPressedCallBack to respond to user pressing 'Back' button on navigation bar
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return object : Dialog(requireContext(), theme) {
|
||||
override fun onBackPressed() {
|
||||
val dialog = Dialog(requireContext(), theme)
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner, onBackPressedCallBack
|
||||
)
|
||||
return dialog
|
||||
}
|
||||
|
||||
private val onBackPressedCallBack =
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
dismissNavigationHistoryDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun dismissNavigationHistoryDialog() {
|
||||
dialog?.dismiss()
|
||||
@ -145,6 +153,7 @@ class NavigationHistoryDialog(
|
||||
super.onDestroyView()
|
||||
navigationHistoryAdapter = null
|
||||
dialogNavigationHistoryBinding = null
|
||||
onBackPressedCallBack.remove()
|
||||
}
|
||||
|
||||
private fun onItemClick(item: NavigationHistoryListItem) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user