mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Detached permission request from DiskUtil (#10051)
Being an extension on the DiskUtil couples to a class at a different abstraction layer without really needing to. Created PermissionRequestHelper as a place to put similar requests if needed in the future.
This commit is contained in:
		@@ -1,18 +0,0 @@
 | 
			
		||||
package eu.kanade.presentation.extensions
 | 
			
		||||
 | 
			
		||||
import android.Manifest
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.LaunchedEffect
 | 
			
		||||
import com.google.accompanist.permissions.rememberPermissionState
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Launches request for [Manifest.permission.WRITE_EXTERNAL_STORAGE] permission
 | 
			
		||||
 */
 | 
			
		||||
@Composable
 | 
			
		||||
fun DiskUtil.RequestStoragePermission() {
 | 
			
		||||
    val permissionState = rememberPermissionState(permission = Manifest.permission.WRITE_EXTERNAL_STORAGE)
 | 
			
		||||
    LaunchedEffect(Unit) {
 | 
			
		||||
        permissionState.launchPermissionRequest()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -33,15 +33,14 @@ import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.core.net.toUri
 | 
			
		||||
import com.hippo.unifile.UniFile
 | 
			
		||||
import eu.kanade.presentation.extensions.RequestStoragePermission
 | 
			
		||||
import eu.kanade.presentation.more.settings.Preference
 | 
			
		||||
import eu.kanade.presentation.permissions.PermissionRequestHelper
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupConst
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupCreateJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupRestoreJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.models.Backup
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.toast
 | 
			
		||||
@@ -66,7 +65,7 @@ object SettingsBackupScreen : SearchableSettings {
 | 
			
		||||
    override fun getPreferences(): List<Preference> {
 | 
			
		||||
        val backupPreferences = Injekt.get<BackupPreferences>()
 | 
			
		||||
 | 
			
		||||
        DiskUtil.RequestStoragePermission()
 | 
			
		||||
        PermissionRequestHelper.requestStoragePermission()
 | 
			
		||||
 | 
			
		||||
        return listOf(
 | 
			
		||||
            getCreateBackupPref(),
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,20 @@
 | 
			
		||||
package eu.kanade.presentation.permissions
 | 
			
		||||
 | 
			
		||||
import android.Manifest
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.LaunchedEffect
 | 
			
		||||
import com.google.accompanist.permissions.rememberPermissionState
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Launches request for [Manifest.permission.WRITE_EXTERNAL_STORAGE] permission
 | 
			
		||||
 */
 | 
			
		||||
object PermissionRequestHelper {
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
    fun requestStoragePermission() {
 | 
			
		||||
        val permissionState = rememberPermissionState(permission = Manifest.permission.WRITE_EXTERNAL_STORAGE)
 | 
			
		||||
        LaunchedEffect(Unit) {
 | 
			
		||||
            permissionState.launchPermissionRequest()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -14,7 +14,7 @@ import cafe.adriel.voyager.navigator.Navigator
 | 
			
		||||
import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
 | 
			
		||||
import cafe.adriel.voyager.navigator.tab.TabOptions
 | 
			
		||||
import eu.kanade.presentation.components.TabbedScreen
 | 
			
		||||
import eu.kanade.presentation.extensions.RequestStoragePermission
 | 
			
		||||
import eu.kanade.presentation.permissions.PermissionRequestHelper
 | 
			
		||||
import eu.kanade.presentation.util.Tab
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsScreenModel
 | 
			
		||||
@@ -23,7 +23,6 @@ import eu.kanade.tachiyomi.ui.browse.migration.sources.migrateSourceTab
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.sourcesTab
 | 
			
		||||
import eu.kanade.tachiyomi.ui.main.MainActivity
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
 | 
			
		||||
data class BrowseTab(
 | 
			
		||||
    private val toExtensions: Boolean = false,
 | 
			
		||||
@@ -66,7 +65,7 @@ data class BrowseTab(
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        // For local source
 | 
			
		||||
        DiskUtil.RequestStoragePermission()
 | 
			
		||||
        PermissionRequestHelper.requestStoragePermission()
 | 
			
		||||
 | 
			
		||||
        LaunchedEffect(Unit) {
 | 
			
		||||
            (context as? MainActivity)?.ready = true
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user