Improve logging in regV5.

This commit is contained in:
Greyson Parrelli
2026-07-16 13:38:35 -04:00
committed by Cody Henthorne
parent 4cafe16e25
commit 67b50b499e
6 changed files with 20 additions and 7 deletions
@@ -13,6 +13,7 @@ import kotlinx.serialization.Serializable
import okio.ByteString
import org.signal.core.models.AccountEntropyPool
import org.signal.core.models.MasterKey
import org.signal.core.util.censor
import org.signal.core.util.serialization.ByteArrayToBase64Serializer
import org.signal.libsignal.net.BadRequestError
import org.signal.libsignal.net.RequestResult
@@ -482,7 +483,9 @@ interface NetworkController {
val allowedToRequestCode: Boolean,
val requestedInformation: List<String>,
val verified: Boolean
) : Parcelable
) : Parcelable {
override fun toString(): String = "SessionMetadata(id=${id.censor()}, nextSms=$nextSms, nextCall=$nextCall, nextVerificationAttempt=$nextVerificationAttempt, allowedToRequestCode=$allowedToRequestCode, requestedInformation=$requestedInformation, verified=$verified)"
}
@Serializable
class AccountAttributes(
@@ -566,7 +569,9 @@ interface NetworkController {
data class SvrCredentials(
val username: String,
val password: String
) : Parcelable
) : Parcelable {
override fun toString(): String = "SvrCredentials(username=${username.censor()}, password=${password.censor()})"
}
@Serializable
data class CheckSvrCredentialsResponse(
@@ -58,6 +58,6 @@ data class RegistrationFlowState(
val isRestoringNavigationState: Boolean = true
) : Parcelable {
override fun toString(): String {
return "RegistrationFlowState(backStack=${backStack.joinToString()}, sessionMetadata=${sessionMetadata.let { "present" }}, sessionE164=$sessionE164, accountEntropyPool=${accountEntropyPool?.displayValue?.censor()}, storageCapable=$storageCapable, temporaryMasterKey=${temporaryMasterKey?.toString()?.censor()}, preExistingRegistrationData=${preExistingRegistrationData?.let { "present" }}, doNotAttemptRecoveryPassword=$doNotAttemptRecoveryPassword, pendingRestoreOption=$pendingRestoreOption, unverifiedRestoredAep=${unverifiedRestoredAep?.displayValue?.censor()}, restoreMethodToken=${restoreMethodToken?.censor()}, isRestoringNavigation=$isRestoringNavigationState)"
return "RegistrationFlowState(backStack=${backStack.joinToString()}, sessionMetadata=$sessionMetadata, sessionE164=$sessionE164, accountEntropyPool=${accountEntropyPool?.displayValue?.censor()}, storageCapable=$storageCapable, temporaryMasterKey=${temporaryMasterKey?.toString()?.censor()}, preExistingRegistrationData=$preExistingRegistrationData, doNotAttemptRecoveryPassword=$doNotAttemptRecoveryPassword, pendingRestoreOption=$pendingRestoreOption, unverifiedRestoredAep=${unverifiedRestoredAep?.displayValue?.censor()}, restoreMethodToken=${restoreMethodToken?.censor()}, isRestoringNavigation=$isRestoringNavigationState)"
}
}
@@ -14,6 +14,7 @@ import org.signal.archive.LocalBackupRestoreProgress
import org.signal.core.models.AccountEntropyPool
import org.signal.core.models.ServiceId.ACI
import org.signal.core.models.ServiceId.PNI
import org.signal.core.util.censor
import org.signal.libsignal.protocol.IdentityKeyPair
import org.signal.libsignal.protocol.state.KyberPreKeyRecord
import org.signal.libsignal.protocol.state.SignedPreKeyRecord
@@ -268,4 +269,8 @@ data class PreExistingRegistrationData(
val unrestrictedUnidentifiedAccess: Boolean,
val aciIdentityKeyPair: IdentityKeyPair,
val pniIdentityKeyPair: IdentityKeyPair
) : Parcelable
) : Parcelable {
override fun toString(): String {
return "PreExistingRegistrationData(e164=$e164, aci=$aci, pni=$pni, servicePassword=${servicePassword.censor()}, aep=${aep.displayValue.censor()}, registrationLockEnabled=$registrationLockEnabled, unrestrictedUnidentifiedAccess=$unrestrictedUnidentifiedAccess, aciIdentityKeyPair=xxx, pniIdentityKeyPair=xxx)"
}
}
@@ -24,7 +24,9 @@ sealed class PhoneNumberEntryScreenEvents {
* new raw field text are provided so the view model can determine whether this was a single typed character or a bulk
* change (a paste or autofill).
*/
data class NationalNumberChanged(val oldValue: String, val newValue: String) : PhoneNumberEntryScreenEvents()
data class NationalNumberChanged(val oldValue: String, val newValue: String) : PhoneNumberEntryScreenEvents() {
override fun toString(): String = "NationalNumberChanged(oldValue=${oldValue.censor()}, newValue=${newValue.censor()})"
}
/** The user changed the country via the country picker. */
data class CountrySelected(val countryCode: Int, val regionCode: String, val countryName: String, val countryEmoji: String) : PhoneNumberEntryScreenEvents()
@@ -5,6 +5,7 @@
package org.signal.registration.screens.phonenumber
import org.signal.core.util.censor
import org.signal.registration.NetworkController
import org.signal.registration.NetworkController.SessionMetadata
import org.signal.registration.PendingRestoreOption
@@ -31,7 +32,7 @@ data class PhoneNumberEntryState(
/** Whether the entered number is definitively invalid. A still-too-short number is not considered invalid, since the user may simply be mid-entry. */
val isNumberInvalid: Boolean = false
) {
override fun toString(): String = "PhoneNumberEntryState(regionCode=$regionCode, countryCode=$countryCode, countryName=$countryName, countryEmoji=$countryEmoji, nationalNumber=$nationalNumber, formattedNumber=$formattedNumber, sessionE164=$sessionE164, sessionMetadata=${sessionMetadata?.let { "present" }}, showSpinner=$showSpinner, dialogs=$dialogs, preExistingRegistrationData=${preExistingRegistrationData?.let { "present" }}, restoredSvrCredentials=${restoredSvrCredentials.size} items, pendingRestoreOption=$pendingRestoreOption, initialized=$initialized, isNumberPossible=$isNumberPossible, isNumberInvalid=$isNumberInvalid)"
override fun toString(): String = "PhoneNumberEntryState(regionCode=$regionCode, countryCode=$countryCode, countryName=$countryName, countryEmoji=$countryEmoji, nationalNumber=${nationalNumber.censor()}, formattedNumber=${formattedNumber.censor()}, sessionE164=$sessionE164, sessionMetadata=$sessionMetadata, showSpinner=$showSpinner, dialogs=$dialogs, preExistingRegistrationData=${preExistingRegistrationData?.let { "present" }}, restoredSvrCredentials=${restoredSvrCredentials.size} items, pendingRestoreOption=$pendingRestoreOption, initialized=$initialized, isNumberPossible=$isNumberPossible, isNumberInvalid=$isNumberInvalid)"
data class Dialogs(
/** Asks the user to confirm the number they entered before submitting it. */
@@ -21,7 +21,7 @@ data class VerificationCodeState(
val showContactSupportSheet: Boolean = false,
val snackbars: Snackbars = Snackbars()
) {
override fun toString(): String = "VerificationCodeState(sessionMetadata=${sessionMetadata?.let { "present" }}, e164=$e164, isSubmittingCode=$isSubmittingCode, rateLimits=$rateLimits, incorrectCodeAttempts=$incorrectCodeAttempts, autoFillCode=${autoFillCode?.let { "present" }}, digitsEntered=${digits.count { it.isNotEmpty() }}, focusedDigitIndex=$focusedDigitIndex, showContactSupportSheet=$showContactSupportSheet, snackbars=$snackbars)"
override fun toString(): String = "VerificationCodeState(sessionMetadata=$sessionMetadata, e164=$e164, isSubmittingCode=$isSubmittingCode, rateLimits=$rateLimits, incorrectCodeAttempts=$incorrectCodeAttempts, autoFillCode=${autoFillCode?.let { "present" }}, digitsEntered=${digits.count { it.isNotEmpty() }}, focusedDigitIndex=$focusedDigitIndex, showContactSupportSheet=$showContactSupportSheet, snackbars=$snackbars)"
/**
* The full code as currently entered. Only meaningful when [isComplete] is true.