Prevent empty passphrases when restoring local chat backups.

Fixes #14015
Resolves #14016
This commit is contained in:
Henry Addo
2025-02-24 17:34:05 -08:00
committed by Greyson Parrelli
parent 0c445c2fe9
commit cf529b354b

View File

@@ -11,6 +11,8 @@ import android.view.View
import android.widget.EditText
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
@@ -185,17 +187,31 @@ class RestoreLocalBackupFragment : LoggingFragment(R.layout.fragment_restore_loc
prompt.addTextChangedListener(PassphraseAsYouTypeFormatter())
MaterialAlertDialogBuilder(requireContext())
val alertDialog = MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.RegistrationActivity_enter_backup_passphrase)
.setView(view)
.setPositiveButton(R.string.RegistrationActivity_restore) { _, _ ->
ViewUtil.hideKeyboard(requireContext(), prompt)
val passphrase = prompt.getText().toString()
restoreLocalBackupViewModel.confirmPassphraseAndBeginRestore(requireContext(), passphrase)
// Do nothing, we'll handle this in the setOnShowListener method below.
}
.setNegativeButton(android.R.string.cancel, null)
.show()
.create()
alertDialog.setOnShowListener { dialog ->
val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
positiveButton.isEnabled = false
prompt.doOnTextChanged { text, _, _, _ ->
val input = text.toString()
positiveButton.isEnabled = input.isNotBlank()
}
positiveButton.setOnClickListener {
ViewUtil.hideKeyboard(requireContext(), prompt)
restoreLocalBackupViewModel.confirmPassphraseAndBeginRestore(requireContext(), prompt.text.toString())
dialog.dismiss()
}
}
alertDialog.show()
Log.i(TAG, "Prompt for backup passphrase shown to user.")
}