mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-25 03:11:10 +01:00
Only mark username corrupted after repeated failures.
This commit is contained in:
committed by
Cody Henthorne
parent
1aa7175006
commit
8023285b9d
@@ -83,7 +83,8 @@ object UsernameRepository {
|
||||
|
||||
private val URL_REGEX = """(https://)?signal.me/?#eu/([a-zA-Z0-9+\-_/]+)""".toRegex()
|
||||
|
||||
val BASE_URL = "https://signal.me/#eu/"
|
||||
private const val BASE_URL = "https://signal.me/#eu/"
|
||||
private const val USERNAME_SYNC_ERROR_THRESHOLD = 3
|
||||
|
||||
private val accountManager: SignalServiceAccountManager get() = ApplicationDependencies.getSignalServiceAccountManager()
|
||||
|
||||
@@ -153,6 +154,7 @@ object UsernameRepository {
|
||||
|
||||
if (SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.LINK_CORRUPTED) {
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
}
|
||||
|
||||
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
|
||||
@@ -251,6 +253,44 @@ object UsernameRepository {
|
||||
return BASE_URL + base64
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onUsernameConsistencyValidated() {
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
|
||||
|
||||
if (SignalStore.account().usernameSyncErrorCount > 0) {
|
||||
Log.i(TAG, "Username consistency validated. There were previously ${SignalStore.account().usernameSyncErrorCount} error(s).")
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onUsernameMismatchDetected() {
|
||||
SignalStore.account().usernameSyncErrorCount++
|
||||
|
||||
if (SignalStore.account().usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) {
|
||||
Log.w(TAG, "We've now seen ${SignalStore.account().usernameSyncErrorCount} mismatches in a row. Marking username and link as corrupted.")
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
} else {
|
||||
Log.w(TAG, "Username mismatch reported. At ${SignalStore.account().usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.")
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onUsernameLinkMismatchDetected() {
|
||||
SignalStore.account().usernameSyncErrorCount++
|
||||
|
||||
if (SignalStore.account().usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) {
|
||||
Log.w(TAG, "We've now seen ${SignalStore.account().usernameSyncErrorCount} mismatches in a row. Marking link as corrupted.")
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.LINK_CORRUPTED
|
||||
SignalStore.account().usernameLink = null
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
StorageSyncHelper.scheduleSyncForDataChange()
|
||||
} else {
|
||||
Log.w(TAG, "Link mismatch reported. At ${SignalStore.account().usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.")
|
||||
}
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
private fun reserveUsernameInternal(nickname: String): Result<UsernameState.Reserved, UsernameSetResult> {
|
||||
return try {
|
||||
@@ -293,6 +333,7 @@ object UsernameRepository {
|
||||
SignalStore.account().usernameLink = null
|
||||
SignalDatabase.recipients.setUsername(Recipient.self().id, reserved.username)
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
|
||||
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
|
||||
StorageSyncHelper.scheduleSyncForDataChange()
|
||||
@@ -345,6 +386,7 @@ object UsernameRepository {
|
||||
SignalStore.account().username = null
|
||||
SignalStore.account().usernameLink = null
|
||||
SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
|
||||
SignalStore.account().usernameSyncErrorCount = 0
|
||||
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
|
||||
StorageSyncHelper.scheduleSyncForDataChange()
|
||||
Log.i(TAG, "[deleteUsername] Successfully deleted the username.")
|
||||
|
||||
Reference in New Issue
Block a user