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 6080abf9d4..c2de0e9af0 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 0000000000..e0e39778a2
--- /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 0000000000..20a479fed2
--- /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 82f3e20d2e..62e3272da2 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
+