From c1ef2728dce05ef5f1d76b878048477df93175b0 Mon Sep 17 00:00:00 2001 From: Anton Chekulaev Date: Thu, 17 Dec 2020 16:18:01 +1100 Subject: [PATCH] Add Session ID change notice. Changes from aec7f6356 --- .../loki/dialogs/ClearAllDataDialog.kt | 20 ++++++++++++++++--- .../loki/utilities/KeyPairUtilities.kt | 5 +++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/dialogs/ClearAllDataDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/dialogs/ClearAllDataDialog.kt index 42e4e0711a..50e54567b9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/dialogs/ClearAllDataDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/dialogs/ClearAllDataDialog.kt @@ -10,12 +10,13 @@ import android.view.LayoutInflater import kotlinx.android.synthetic.main.dialog_clear_all_data.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.ApplicationContext +import org.thoughtcrime.securesms.loki.utilities.KeyPairUtilities class ClearAllDataDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val builder = AlertDialog.Builder(context!!) - val contentView = LayoutInflater.from(context!!).inflate(R.layout.dialog_clear_all_data, null) + val builder = AlertDialog.Builder(requireContext()) + val contentView = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_clear_all_data, null) contentView.cancelButton.setOnClickListener { dismiss() } contentView.clearAllDataButton.setOnClickListener { clearAllData() } builder.setView(contentView) @@ -25,6 +26,19 @@ class ClearAllDataDialog : DialogFragment() { } private fun clearAllData() { - ApplicationContext.getInstance(context).clearData() + if (KeyPairUtilities.hasV2KeyPair(requireContext())) { + ApplicationContext.getInstance(context).clearData() + } else { + val dialog = AlertDialog.Builder(requireContext()) + val message = "We’ve upgraded the way Session IDs are generated, so you will be unable to restore your current Session ID." + dialog.setMessage(message) + dialog.setPositiveButton("Yes") { _, _ -> + ApplicationContext.getInstance(context).clearData() + } + dialog.setNegativeButton("Cancel") { _, _ -> + // Do nothing + } + dialog.create().show() + } } } \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/KeyPairUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/KeyPairUtilities.kt index 00aea67d4d..de310dbd6b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/KeyPairUtilities.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/KeyPairUtilities.kt @@ -40,6 +40,11 @@ object KeyPairUtilities { IdentityKeyUtil.save(context, IdentityKeyUtil.ED25519_SECRET_KEY, Base64.encodeBytes(ed25519KeyPair.secretKey.asBytes)) } + fun hasV2KeyPair(context: Context): Boolean { + return (IdentityKeyUtil.retrieve(context, IdentityKeyUtil.ED25519_SECRET_KEY) != null) + } + + data class KeyPairGenerationResult( val seed: ByteArray, val ed25519KeyPair: KeyPair,