From c0785e4da76b882de872e05b4d5758d8808d27fd Mon Sep 17 00:00:00 2001 From: Anton Chekulaev Date: Wed, 16 Sep 2020 16:30:39 +1000 Subject: [PATCH] Cleanup backup permissions. --- .../preferences/ChatsPreferenceFragment.java | 30 ++++++------------- .../thoughtcrime/securesms/util/BackupUtil.kt | 11 +++---- .../securesms/util/SaveAttachmentTask.kt | 2 ++ 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java index 883e81740f..1814e90fa9 100644 --- a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java @@ -152,17 +152,11 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment { private class BackupClickListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { - Permissions.with(ChatsPreferenceFragment.this) - .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) - .onAllGranted(() -> { - if (!((SwitchPreferenceCompat)preference).isChecked()) { - BackupDialog.showEnableBackupDialog(getActivity(), (SwitchPreferenceCompat)preference, backupDirSelector); - } else { - BackupDialog.showDisableBackupDialog(getActivity(), (SwitchPreferenceCompat)preference); - } - }) - .withPermanentDenialDialog(getString(R.string.ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups)) - .execute(); + if (!((SwitchPreferenceCompat)preference).isChecked()) { + BackupDialog.showEnableBackupDialog(getActivity(), (SwitchPreferenceCompat)preference, backupDirSelector); + } else { + BackupDialog.showDisableBackupDialog(getActivity(), (SwitchPreferenceCompat)preference); + } return true; } @@ -172,16 +166,10 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment { @SuppressLint("StaticFieldLeak") @Override public boolean onPreferenceClick(Preference preference) { - Permissions.with(ChatsPreferenceFragment.this) - .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) - .onAllGranted(() -> { - Log.i(TAG, "Queing backup..."); - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new LocalBackupJob()); - }) - .withPermanentDenialDialog(getString(R.string.ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups)) - .execute(); + Log.i(TAG, "Queuing backup..."); + ApplicationContext.getInstance(getContext()) + .getJobManager() + .add(new LocalBackupJob()); return true; } diff --git a/src/org/thoughtcrime/securesms/util/BackupUtil.kt b/src/org/thoughtcrime/securesms/util/BackupUtil.kt index 94a5b1eaf1..2a70b72874 100644 --- a/src/org/thoughtcrime/securesms/util/BackupUtil.kt +++ b/src/org/thoughtcrime/securesms/util/BackupUtil.kt @@ -23,6 +23,7 @@ import java.io.IOException import java.security.SecureRandom import java.text.SimpleDateFormat import java.util.* +import kotlin.jvm.Throws object BackupUtil { private const val TAG = "BackupUtil" @@ -43,14 +44,10 @@ object BackupUtil { @JvmStatic fun generateBackupPassphrase(): Array { - val result = arrayOfNulls(6) - val random = ByteArray(30) - SecureRandom().nextBytes(random) - for (i in 0..5) { - result[i] = String.format("%05d", ByteUtil.byteArray5ToLong(random, i * 5) % 100000) + val random = ByteArray(30).also { SecureRandom().nextBytes(it) } + return Array(6) {i -> + String.format("%05d", ByteUtil.byteArray5ToLong(random, i * 5) % 100000) } - @Suppress("UNCHECKED_CAST") - return result as Array } @JvmStatic diff --git a/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.kt b/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.kt index d4dc58eb7b..1c57af91bc 100644 --- a/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.kt +++ b/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.kt @@ -18,9 +18,11 @@ import java.io.File import java.io.IOException import java.lang.ref.WeakReference import java.text.SimpleDateFormat +import kotlin.jvm.Throws /** * Saves attachment files to an external storage using [MediaStore] API. + * Requires [android.Manifest.permission.WRITE_EXTERNAL_STORAGE] on API 28 and below. */ class SaveAttachmentTask : ProgressDialogAsyncTask> {