Merge pull request #3618 from kiwix/Issue#3611

Fixed: 3.9.0 Welcome screen does not run, and Kiwix does not prompt for permissions.
This commit is contained in:
Kelson 2023-12-23 10:26:13 +01:00 committed by GitHub
commit 3c17704a07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 21 deletions

View File

@ -38,7 +38,6 @@ import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
@ -139,7 +138,13 @@ class LocalLibraryFragment : BaseFragment() {
private val bookDelegate: BookOnDiskDelegate.BookDelegate by lazy { private val bookDelegate: BookOnDiskDelegate.BookDelegate by lazy {
BookOnDiskDelegate.BookDelegate( BookOnDiskDelegate.BookDelegate(
sharedPreferenceUtil, sharedPreferenceUtil,
{ offerAction(RequestNavigateTo(it)) }, {
if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) {
showManageExternalStoragePermissionDialog()
} else {
offerAction(RequestNavigateTo(it))
}
},
{ offerAction(RequestMultiSelection(it)) }, { offerAction(RequestMultiSelection(it)) },
{ offerAction(RequestSelect(it)) } { offerAction(RequestSelect(it)) }
) )
@ -264,8 +269,11 @@ class LocalLibraryFragment : BaseFragment() {
fragmentDestinationLibraryBinding?.zimSwiperefresh?.isRefreshing = false fragmentDestinationLibraryBinding?.zimSwiperefresh?.isRefreshing = false
} else { } else {
if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) { if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) {
@Suppress("NewApi")
showManageExternalStoragePermissionDialog() showManageExternalStoragePermissionDialog()
// Set loading to false since the dialog is currently being displayed.
// If the user clicks on "No" in the permission dialog,
// the loading icon remains visible infinitely.
fragmentDestinationLibraryBinding?.zimSwiperefresh?.isRefreshing = false
} else { } else {
requestFileSystemCheck() requestFileSystemCheck()
} }
@ -273,14 +281,15 @@ class LocalLibraryFragment : BaseFragment() {
} }
} }
@RequiresApi(Build.VERSION_CODES.R)
private fun showManageExternalStoragePermissionDialog() { private fun showManageExternalStoragePermissionDialog() {
dialogShower.show( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
KiwixDialog.ManageExternalFilesPermissionDialog, dialogShower.show(
{ KiwixDialog.ManageExternalFilesPermissionDialog,
this.activity?.let(FragmentActivity::navigateToSettings) {
} this.activity?.let(FragmentActivity::navigateToSettings)
) }
)
}
} }
private fun getBottomNavigationView() = private fun getBottomNavigationView() =
@ -303,7 +312,6 @@ class LocalLibraryFragment : BaseFragment() {
fragmentDestinationLibraryBinding?.selectFile?.setOnClickListener { fragmentDestinationLibraryBinding?.selectFile?.setOnClickListener {
if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) { if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) {
@Suppress("NewApi")
showManageExternalStoragePermissionDialog() showManageExternalStoragePermissionDialog()
} else { } else {
showFileChooser() showFileChooser()

View File

@ -37,7 +37,6 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
@ -531,7 +530,6 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions {
sharedPreferenceUtil sharedPreferenceUtil
) )
) { ) {
@Suppress("NewApi")
showManageExternalStoragePermissionDialog() showManageExternalStoragePermissionDialog()
} else { } else {
availableSpaceCalculator.hasAvailableSpaceFor( availableSpaceCalculator.hasAvailableSpaceFor(
@ -579,20 +577,20 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions {
private fun clickOnBookItem() { private fun clickOnBookItem() {
if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) { if (!requireActivity().isManageExternalStoragePermissionGranted(sharedPreferenceUtil)) {
@Suppress("NewApi")
showManageExternalStoragePermissionDialog() showManageExternalStoragePermissionDialog()
} else { } else {
downloadBookItem?.let(::onBookItemClick) downloadBookItem?.let(::onBookItemClick)
} }
} }
@RequiresApi(Build.VERSION_CODES.R)
private fun showManageExternalStoragePermissionDialog() { private fun showManageExternalStoragePermissionDialog() {
dialogShower.show( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
KiwixDialog.ManageExternalFilesPermissionDialog, dialogShower.show(
{ KiwixDialog.ManageExternalFilesPermissionDialog,
this.activity?.let(FragmentActivity::navigateToSettings) {
} this.activity?.let(FragmentActivity::navigateToSettings)
) }
)
}
} }
} }