From 23a328f12d62bacf4934d298abe5084592624220 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 1 Sep 2022 13:17:53 -0300 Subject: [PATCH] Add screen to set Signal as default SMS. --- .../flow/ExportYourSmsMessagesFragment.kt | 38 ++--------- .../flow/SetSignalAsDefaultSmsAppFragment.kt | 46 +++++++++++++ ...set_signal_as_default_sms_app_fragment.xml | 64 +++++++++++++++++++ app/src/main/res/navigation/sms_export.xml | 18 ++++++ app/src/main/res/values/strings.xml | 6 ++ 5 files changed, 139 insertions(+), 33 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/exporter/flow/SetSignalAsDefaultSmsAppFragment.kt create mode 100644 app/src/main/res/layout/set_signal_as_default_sms_app_fragment.xml diff --git a/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/ExportYourSmsMessagesFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/ExportYourSmsMessagesFragment.kt index 6080abf9d..c2de0e9af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/ExportYourSmsMessagesFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/ExportYourSmsMessagesFragment.kt @@ -1,11 +1,9 @@ package org.thoughtcrime.securesms.exporter.flow -import android.content.Intent import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController -import org.signal.smsexporter.BecomeSmsAppFailure import org.signal.smsexporter.DefaultSmsHelper import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.databinding.ExportYourSmsMessagesFragmentBinding @@ -16,10 +14,6 @@ import org.thoughtcrime.securesms.util.navigation.safeNavigate */ class ExportYourSmsMessagesFragment : Fragment(R.layout.export_your_sms_messages_fragment) { - companion object { - private val REQUEST_CODE = 1 - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val binding = ExportYourSmsMessagesFragmentBinding.bind(view) @@ -27,34 +21,12 @@ class ExportYourSmsMessagesFragment : Fragment(R.layout.export_your_sms_messages requireActivity().finish() } - DefaultSmsHelper.becomeDefaultSms(requireContext()).either( - onSuccess = { - binding.continueButton.setOnClickListener { _ -> - startActivityForResult(it, REQUEST_CODE) - } - }, - onFailure = { - when (it) { - BecomeSmsAppFailure.ALREADY_DEFAULT_SMS -> { - binding.continueButton.setOnClickListener { - navigateToExporter() - } - } - BecomeSmsAppFailure.ROLE_IS_NOT_AVAILABLE -> { - error("Should never happen.") - } - } + binding.continueButton.setOnClickListener { + if (DefaultSmsHelper.isDefaultSms(requireContext())) { + findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToExportingSmsMessagesFragment()) + } else { + findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToSetSignalAsDefaultSmsAppFragment()) } - ) - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (requestCode == REQUEST_CODE && DefaultSmsHelper.isDefaultSms(requireContext())) { - navigateToExporter() } } - - private fun navigateToExporter() { - findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToExportingSmsMessagesFragment()) - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/SetSignalAsDefaultSmsAppFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/SetSignalAsDefaultSmsAppFragment.kt new file mode 100644 index 000000000..e0e39778a --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/exporter/flow/SetSignalAsDefaultSmsAppFragment.kt @@ -0,0 +1,46 @@ +package org.thoughtcrime.securesms.exporter.flow + +import android.content.Intent +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import org.signal.smsexporter.BecomeSmsAppFailure +import org.signal.smsexporter.DefaultSmsHelper +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.databinding.SetSignalAsDefaultSmsAppFragmentBinding +import org.thoughtcrime.securesms.util.navigation.safeNavigate + +class SetSignalAsDefaultSmsAppFragment : Fragment(R.layout.set_signal_as_default_sms_app_fragment) { + companion object { + private const val REQUEST_CODE = 1 + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + val binding = SetSignalAsDefaultSmsAppFragmentBinding.bind(view) + + binding.continueButton.setOnClickListener { + DefaultSmsHelper.becomeDefaultSms(requireContext()).either( + onSuccess = { + startActivityForResult(it, REQUEST_CODE) + }, + onFailure = { + when (it) { + BecomeSmsAppFailure.ALREADY_DEFAULT_SMS -> navigateToExporter() + BecomeSmsAppFailure.ROLE_IS_NOT_AVAILABLE -> error("Should never happen") + } + } + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (requestCode == REQUEST_CODE && DefaultSmsHelper.isDefaultSms(requireContext())) { + navigateToExporter() + } + } + + private fun navigateToExporter() { + findNavController().safeNavigate(SetSignalAsDefaultSmsAppFragmentDirections.actionSetSignalAsDefaultSmsAppFragmentToExportingSmsMessagesFragment()) + } +} diff --git a/app/src/main/res/layout/set_signal_as_default_sms_app_fragment.xml b/app/src/main/res/layout/set_signal_as_default_sms_app_fragment.xml new file mode 100644 index 000000000..20a479fed --- /dev/null +++ b/app/src/main/res/layout/set_signal_as_default_sms_app_fragment.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/sms_export.xml b/app/src/main/res/navigation/sms_export.xml index 82f3e20d2..62e3272da 100644 --- a/app/src/main/res/navigation/sms_export.xml +++ b/app/src/main/res/navigation/sms_export.xml @@ -17,6 +17,24 @@ app:exitAnim="@anim/fragment_open_exit" app:popEnterAnim="@anim/fragment_close_enter" app:popExitAnim="@anim/fragment_close_exit" /> + + + + + + You have changed the default SMS app, do you want to remove SMS messages from Signal? + + + First, set Signal as the default SMS app + + Next +