Add screen to set Signal as default SMS.

This commit is contained in:
Alex Hart
2022-09-01 13:17:53 -03:00
committed by GitHub
parent 83905dd6a6
commit 23a328f12d
5 changed files with 139 additions and 33 deletions

View File

@@ -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())
}
}

View File

@@ -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())
}
}