mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-09-19 16:24:41 +01:00
Support nullable number in whoami response.
This commit is contained in:
committed by
Alex Hart
parent
478b18aed8
commit
7a27b6e40f
+3
-3
@@ -210,9 +210,9 @@ class ChangeNumberViewModel : ViewModel() {
|
||||
return@launch
|
||||
}
|
||||
|
||||
if (reattempt) {
|
||||
Log.i(TAG, "Reattempting local change.\n Local state (e164=${SignalStore.account.e164}, pni=${SignalStore.account.pni})\n Remote state (e164=${whoAmI.number}, pni=$remotePni)")
|
||||
repository.changeLocalNumber(whoAmI.number, remotePni)
|
||||
if (reattempt && remoteE164 != null) {
|
||||
Log.i(TAG, "Reattempting local change.\n Local state (e164=${SignalStore.account.e164}, pni=${SignalStore.account.pni})\n Remote state (e164=$remoteE164, pni=$remotePni)")
|
||||
repository.changeLocalNumber(remoteE164, remotePni)
|
||||
}
|
||||
|
||||
SignalStore.misc.unlockChangeNumber()
|
||||
|
||||
+8
-2
@@ -56,8 +56,14 @@ internal class FixChangeNumberErrorMigrationJob(
|
||||
when (val result = SignalNetwork.account.whoAmI()) {
|
||||
is NetworkResult.Success<WhoAmIResponse> -> {
|
||||
val serverPni = result.result.pni?.let { ServiceId.PNI.parseOrNull(it) } ?: return
|
||||
val serverE164 = result.result.number
|
||||
|
||||
if (result.result.number == SignalStore.account.e164 && serverPni == SignalStore.account.pni) {
|
||||
if (serverE164 == null) {
|
||||
Log.i(TAG, "Server reports no e164 for this account, skipping.")
|
||||
return
|
||||
}
|
||||
|
||||
if (serverE164 == SignalStore.account.e164 && serverPni == SignalStore.account.pni) {
|
||||
Log.i(TAG, "No number or PNI mismatch detected.")
|
||||
return
|
||||
}
|
||||
@@ -66,7 +72,7 @@ internal class FixChangeNumberErrorMigrationJob(
|
||||
|
||||
if (pendingPniIdentityMatchesServer(pendingChangeNumberMetadata, serverPni)) {
|
||||
Log.w(TAG, "PNI identity key matches server. Fixing local number/PNI...")
|
||||
ChangeNumberRepository().changeLocalNumber(result.result.number, serverPni)
|
||||
ChangeNumberRepository().changeLocalNumber(serverE164, serverPni)
|
||||
Log.w(TAG, "Done!")
|
||||
} else {
|
||||
Log.w(TAG, "Server PNI identity does not match pending metadata (or could not be verified); cannot safely reconcile. Enqueuing AccountConsistencyWorkerJob.")
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
||||
data class WhoAmIResponse @JsonCreator constructor(
|
||||
@JsonProperty("uuid") val aci: String? = null,
|
||||
@JsonProperty val pni: String? = null,
|
||||
@JsonProperty val number: String,
|
||||
@JsonProperty val number: String? = null,
|
||||
@JsonProperty val usernameHash: String? = null,
|
||||
@JsonProperty val entitlements: Entitlements? = null
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user