Add screen to set Signal as default SMS.

fork-5.53.8
Alex Hart 2022-09-01 13:17:53 -03:00 zatwierdzone przez GitHub
rodzic 83905dd6a6
commit 23a328f12d
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
5 zmienionych plików z 139 dodań i 33 usunięć

Wyświetl plik

@ -1,11 +1,9 @@
package org.thoughtcrime.securesms.exporter.flow package org.thoughtcrime.securesms.exporter.flow
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import org.signal.smsexporter.BecomeSmsAppFailure
import org.signal.smsexporter.DefaultSmsHelper import org.signal.smsexporter.DefaultSmsHelper
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.databinding.ExportYourSmsMessagesFragmentBinding 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) { class ExportYourSmsMessagesFragment : Fragment(R.layout.export_your_sms_messages_fragment) {
companion object {
private val REQUEST_CODE = 1
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val binding = ExportYourSmsMessagesFragmentBinding.bind(view) val binding = ExportYourSmsMessagesFragmentBinding.bind(view)
@ -27,34 +21,12 @@ class ExportYourSmsMessagesFragment : Fragment(R.layout.export_your_sms_messages
requireActivity().finish() requireActivity().finish()
} }
DefaultSmsHelper.becomeDefaultSms(requireContext()).either( binding.continueButton.setOnClickListener {
onSuccess = { if (DefaultSmsHelper.isDefaultSms(requireContext())) {
binding.continueButton.setOnClickListener { _ -> findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToExportingSmsMessagesFragment())
startActivityForResult(it, REQUEST_CODE) } else {
} findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToSetSignalAsDefaultSmsAppFragment())
},
onFailure = {
when (it) {
BecomeSmsAppFailure.ALREADY_DEFAULT_SMS -> {
binding.continueButton.setOnClickListener {
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(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToExportingSmsMessagesFragment())
}
} }

Wyświetl plik

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

Wyświetl plik

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="64dp"
android:minHeight="64dp"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_arrow_left_24" />
<!-- TODO [alex] - Image -->
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:importantForAccessibility="no"
android:scaleType="centerInside"
app:layout_constraintBottom_toTopOf="@id/continue_button"
app:layout_constraintTop_toBottomOf="@id/description"
app:layout_constraintVertical_bias="0" />
<TextView
android:id="@+id/headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:gravity="center"
android:text="@string/SetSignalAsDefaultSmsAppFragment__first_set_signal_as_the_default_sms_app"
android:textAppearance="@style/Signal.Text.HeadlineLarge"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:textAppearance="@style/Signal.Text.BodyLarge"
android:textColor="@color/signal_colorOnSurfaceVariant"
app:layout_constraintTop_toBottomOf="@id/headline"
tools:text="WIP Placeholder text" />
<com.google.android.material.button.MaterialButton
android:id="@+id/continue_button"
style="@style/Signal.Widget.Button.Large.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="44dp"
android:minWidth="221dp"
android:text="@string/SetSignalAsDefaultSmsAppFragment__next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/description"
app:layout_constraintVertical_bias="1" />
</androidx.constraintlayout.widget.ConstraintLayout>

Wyświetl plik

@ -17,6 +17,24 @@
app:exitAnim="@anim/fragment_open_exit" app:exitAnim="@anim/fragment_open_exit"
app:popEnterAnim="@anim/fragment_close_enter" app:popEnterAnim="@anim/fragment_close_enter"
app:popExitAnim="@anim/fragment_close_exit" /> app:popExitAnim="@anim/fragment_close_exit" />
<action
android:id="@+id/action_exportYourSmsMessagesFragment_to_setSignalAsDefaultSmsAppFragment"
app:destination="@id/setSignalAsDefaultSmsAppFragment" />
</fragment>
<fragment
android:id="@+id/setSignalAsDefaultSmsAppFragment"
android:name="org.thoughtcrime.securesms.exporter.flow.SetSignalAsDefaultSmsAppFragment"
android:label="fragment_set_signal_as_default_sms_app"
tools:layout="@layout/choose_a_new_default_sms_app_fragment">
<action
android:id="@+id/action_setSignalAsDefaultSmsAppFragment_to_exportingSmsMessagesFragment"
app:destination="@id/exportingSmsMessagesFragment"
app:enterAnim="@anim/fragment_open_enter"
app:exitAnim="@anim/fragment_open_exit"
app:popEnterAnim="@anim/fragment_close_enter"
app:popExitAnim="@anim/fragment_close_exit" />
</fragment> </fragment>
<fragment <fragment

Wyświetl plik

@ -5198,6 +5198,12 @@
<!-- Message of dialog --> <!-- Message of dialog -->
<string name="RemoveSmsMessagesDialogFragment__you_have_changed">You have changed the default SMS app, do you want to remove SMS messages from Signal?</string> <string name="RemoveSmsMessagesDialogFragment__you_have_changed">You have changed the default SMS app, do you want to remove SMS messages from Signal?</string>
<!-- SetSignalAsDefaultSmsAppFragment -->
<!-- Title of the screen -->
<string name="SetSignalAsDefaultSmsAppFragment__first_set_signal_as_the_default_sms_app">First, set Signal as the default SMS app</string>
<!-- Button label to start export -->
<string name="SetSignalAsDefaultSmsAppFragment__next">Next</string>
<!-- EOF --> <!-- EOF -->
</resources> </resources>