From a9ec8285062636fc7be68fee123bb5899e639fdd Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 16 Sep 2020 17:56:07 +0200 Subject: DownloadsFileSaver: encapsulate permission checks Signed-off-by: Jason A. Donenfeld --- .../android/preference/ZipExporterPreference.kt | 23 +++++++++------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'ui/src/main/java/com/wireguard/android/preference') diff --git a/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt b/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt index 623e272f..aaea7703 100644 --- a/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt +++ b/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt @@ -4,9 +4,7 @@ */ package com.wireguard.android.preference -import android.Manifest import android.content.Context -import android.content.pm.PackageManager import android.util.AttributeSet import android.util.Log import androidx.preference.Preference @@ -43,7 +41,13 @@ class ZipExporterPreference(context: Context, attrs: AttributeSet?) : Preference if (configs.isEmpty()) { throw IllegalArgumentException(context.getString(R.string.no_tunnels_error)) } - val outputFile = DownloadsFileSaver.save(context, "wireguard-export.zip", "application/zip", true) + val outputFile = DownloadsFileSaver.save(activity, "wireguard-export.zip", "application/zip", true) + if (outputFile == null) { + withContext(Dispatchers.Main.immediate) { + isEnabled = true + } + return@withContext null + } try { ZipOutputStream(outputFile.outputStream).use { zip -> for (i in configs.indices) { @@ -82,17 +86,8 @@ class ZipExporterPreference(context: Context, attrs: AttributeSet?) : Preference when (it) { // When we have successful authentication, or when there is no biometric hardware available. is BiometricAuthenticator.Result.Success, is BiometricAuthenticator.Result.HardwareUnavailableOrDisabled -> { - if (DownloadsFileSaver.needsWriteExternalStoragePermission) { - activity.ensurePermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { _, grantResults -> - if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - isEnabled = false - exportZip() - } - } - } else { - isEnabled = false - exportZip() - } + isEnabled = false + exportZip() } is BiometricAuthenticator.Result.Failure -> { Snackbar.make( -- cgit v1.2.3