Add tap to submit debuglog for regv3 screens.

This commit is contained in:
Cody Henthorne
2025-02-18 10:47:28 -05:00
committed by Greyson Parrelli
parent 021fd16540
commit a6aa2ca3ce
2 changed files with 35 additions and 35 deletions

View File

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

View File

@@ -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<Toast?>(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) {