diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationViewDelegate.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationViewDelegate.kt index ed4c5c3322..4ed4b2bf2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationViewDelegate.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationViewDelegate.kt @@ -1,16 +1,10 @@ package org.thoughtcrime.securesms.registration.fragments -import android.content.Context import android.content.Intent -import android.text.SpannableStringBuilder import android.view.View import android.widget.Toast -import androidx.annotation.StringRes -import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.logsubmit.SubmitDebugLogActivity -import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter -import org.thoughtcrime.securesms.util.SpanUtil object RegistrationViewDelegate { @@ -20,45 +14,21 @@ object RegistrationViewDelegate { private val DEBUG_TAP_TARGET = 8 private val DEBUG_TAP_ANNOUNCE = 4 private var debugTapCounter = 0 + private var previousToast: Toast? = null override fun onClick(view: View) { debugTapCounter++ if (debugTapCounter >= DEBUG_TAP_TARGET) { view.context.startActivity(Intent(view.context, SubmitDebugLogActivity::class.java)) + previousToast?.cancel() + previousToast = null } else if (debugTapCounter >= DEBUG_TAP_ANNOUNCE) { val remaining = DEBUG_TAP_TARGET - debugTapCounter - Toast.makeText(view.context, view.context.resources.getQuantityString(R.plurals.RegistrationActivity_debug_log_hint, remaining, remaining), Toast.LENGTH_SHORT).show() + previousToast?.cancel() + previousToast = Toast.makeText(view.context, view.context.resources.getQuantityString(R.plurals.RegistrationActivity_debug_log_hint, remaining, remaining), Toast.LENGTH_SHORT).apply { show() } } } }) } - - @JvmStatic - fun showConfirmNumberDialogIfTranslated( - context: Context, - @StringRes title: Int?, - @StringRes firstMessageLine: Int?, - e164number: String, - onConfirmed: Runnable, - onEditNumber: Runnable - ) { - val message: CharSequence = SpannableStringBuilder().apply { - append(SpanUtil.bold(PhoneNumberFormatter.prettyPrint(e164number))) - if (firstMessageLine != null) { - append("\n\n") - append(context.getString(firstMessageLine)) - } - } - - MaterialAlertDialogBuilder(context).apply { - if (title != null) { - setTitle(title) - } - setMessage(message) - setPositiveButton(android.R.string.ok) { _, _ -> onConfirmed.run() } - setNegativeButton(R.string.RegistrationActivity_edit_number) { _, _ -> onEditNumber.run() } - setOnCancelListener { onEditNumber.run() } - }.show() - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/shared/RegistrationScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/shared/RegistrationScreen.kt index 6ecdf070ed..74d5cd9623 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/shared/RegistrationScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/shared/RegistrationScreen.kt @@ -5,6 +5,9 @@ package org.thoughtcrime.securesms.registrationv3.ui.shared +import android.content.Intent +import android.widget.Toast +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope @@ -21,12 +24,22 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.unit.dp import org.signal.core.ui.Previews import org.signal.core.ui.SignalPreview import org.signal.core.ui.horizontalGutters +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.logsubmit.SubmitDebugLogActivity + +private const val TAP_TARGET = 8 /** * A base framework for rendering the various v3 registration screens. @@ -59,6 +72,9 @@ fun RegistrationScreen( .fillMaxHeight() ) { val scrollState = rememberScrollState() + val context = LocalContext.current + var titleTapCount by remember { mutableIntStateOf(0) } + var previousToast by remember { mutableStateOf(null) } Column( modifier = Modifier @@ -71,6 +87,20 @@ fun RegistrationScreen( text = title, style = MaterialTheme.typography.headlineMedium, modifier = Modifier + .fillMaxWidth() + .clickable { + titleTapCount++ + + if (titleTapCount >= TAP_TARGET) { + context.startActivity(Intent(context, SubmitDebugLogActivity::class.java)) + previousToast?.cancel() + previousToast = null + } else { + val remaining = TAP_TARGET - titleTapCount + previousToast?.cancel() + previousToast = Toast.makeText(context, context.resources.getQuantityString(R.plurals.RegistrationActivity_debug_log_hint, remaining, remaining), Toast.LENGTH_SHORT).apply { show() } + } + } ) if (subtitle != null) {