mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-04 20:34:14 +01:00
Migrate to libsignal deleteUsernameHash.
Co-authored-by: Cody Henthorne <cody@signal.org>
This commit is contained in:
committed by
Greyson Parrelli
parent
7e79dfa57f
commit
35ca16f294
@@ -536,8 +536,8 @@ object UsernameRepository {
|
||||
return UsernameDeleteResult.NETWORK_ERROR
|
||||
}
|
||||
|
||||
return when (val result = SignalNetwork.account.deleteUsername()) {
|
||||
is NetworkResult.Success -> {
|
||||
return when (val result = SignalNetwork.account.deleteUsernameHash()) {
|
||||
is RequestResult.Success -> {
|
||||
SignalDatabase.recipients.setUsername(Recipient.self().id, null)
|
||||
SignalStore.account.username = null
|
||||
SignalStore.account.usernameLink = null
|
||||
@@ -553,10 +553,15 @@ object UsernameRepository {
|
||||
Log.i(TAG, "[deleteUsername] Successfully deleted the username.")
|
||||
UsernameDeleteResult.SUCCESS
|
||||
}
|
||||
else -> {
|
||||
Log.w(TAG, "[deleteUsername] Generic network exception.", result.getCause())
|
||||
|
||||
is RequestResult.RetryableNetworkError -> {
|
||||
Log.w(TAG, "[deleteUsername] Generic network exception.", result.networkError)
|
||||
UsernameDeleteResult.NETWORK_ERROR
|
||||
}
|
||||
|
||||
is RequestResult.ApplicationError -> throw result.cause
|
||||
|
||||
is RequestResult.NonSuccess -> error("Code branch is unreachable")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-5
@@ -9,6 +9,7 @@ import kotlinx.coroutines.runBlocking
|
||||
import org.signal.core.util.Base64
|
||||
import org.signal.core.util.Base64.encodeUrlSafeWithoutPadding
|
||||
import org.signal.libsignal.net.AuthDevicesService
|
||||
import org.signal.libsignal.net.AuthUsernamesService
|
||||
import org.signal.libsignal.net.RequestResult
|
||||
import org.signal.libsignal.usernames.BaseUsernameException
|
||||
import org.signal.libsignal.usernames.Username
|
||||
@@ -215,12 +216,17 @@ class AccountApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSock
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /v1/accounts/username_hash
|
||||
* - 204: Success
|
||||
* Clears the current username hash, ciphertext, and link for the authenticated account.
|
||||
*
|
||||
* This also succeeds if the account has no username set, so a caller retrying a deletion sees
|
||||
* the same result as the original call.
|
||||
*/
|
||||
fun deleteUsername(): NetworkResult<Unit> {
|
||||
val request = WebSocketRequestMessage.delete("/v1/accounts/username_hash")
|
||||
return NetworkResult.fromWebSocketRequest(authWebSocket, request)
|
||||
fun deleteUsernameHash(): RequestResult<Unit, Nothing> {
|
||||
return runBlocking {
|
||||
authWebSocket.runCatchingWithChatConnection { connection ->
|
||||
AuthUsernamesService(connection).deleteUsernameHash()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user