Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into chore/upgrade-to-kotlin-1.9.22
Browse files Browse the repository at this point in the history
vitorhugods authored Mar 5, 2024
2 parents fe245aa + 00706fc commit adae809
Showing 3 changed files with 28 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -420,12 +420,14 @@ class CallManagerImpl internal constructor(
conversationId: ConversationId,
clients: String
) {
withCalling {
wcall_set_clients_for_conv(
it,
federatedIdMapper.parseToFederatedId(conversationId),
clients
)
if (callRepository.getCallMetadataProfile()[conversationId]?.protocol is Conversation.ProtocolInfo.Proteus) {
withCalling {
wcall_set_clients_for_conv(
it,
federatedIdMapper.parseToFederatedId(conversationId),
clients
)
}
}
}

Original file line number Diff line number Diff line change
@@ -32,7 +32,6 @@ import com.wire.kalium.network.api.base.model.ConversationId
import com.wire.kalium.network.api.base.model.GenerateGuestLinkRequest
import com.wire.kalium.network.api.base.model.JoinConversationRequestV4
import com.wire.kalium.network.api.v3.authenticated.ConversationApiV3
import com.wire.kalium.network.exceptions.KaliumException
import com.wire.kalium.network.utils.NetworkResponse
import com.wire.kalium.network.utils.handleUnsuccessfulResponse
import com.wire.kalium.network.utils.mapSuccess
@@ -43,7 +42,6 @@ import io.ktor.client.request.parameter
import io.ktor.client.request.post
import io.ktor.client.request.preparePost
import io.ktor.client.request.setBody
import io.ktor.utils.io.errors.IOException

internal open class ConversationApiV4 internal constructor(
authenticatedNetworkClient: AuthenticatedNetworkClient,
@@ -88,15 +86,16 @@ internal open class ConversationApiV4 internal constructor(
override suspend fun addMember(
addParticipantRequest: AddConversationMembersRequest,
conversationId: ConversationId
): NetworkResponse<ConversationMemberAddedResponse> = try {
httpClient.post("$PATH_CONVERSATIONS/${conversationId.domain}/${conversationId.value}/$PATH_MEMBERS") {
setBody(addParticipantRequest)
}.let { response ->
wrapFederationResponse(response) { handleConversationMemberAddedResponse(response) }
): NetworkResponse<ConversationMemberAddedResponse> = wrapKaliumResponse(
performRequest = {
httpClient.post("$PATH_CONVERSATIONS/${conversationId.domain}/${conversationId.value}/$PATH_MEMBERS") {
setBody(addParticipantRequest)
}
},
unsuccessfulResponseOverride = {
wrapFederationResponse(it) { handleConversationMemberAddedResponse(it) }
}
} catch (e: IOException) {
NetworkResponse.Error(KaliumException.GenericError(e))
}
)

override suspend fun generateGuestRoomLink(
conversationId: ConversationId,
Original file line number Diff line number Diff line change
@@ -24,15 +24,17 @@ import com.wire.kalium.network.api.base.model.FederationConflictResponse
import com.wire.kalium.network.api.base.model.FederationUnreachableResponse
import com.wire.kalium.network.exceptions.KaliumException
import com.wire.kalium.network.kaliumLogger
import com.wire.kalium.network.tools.KtxSerializer
import io.ktor.client.call.NoTransformationFoundException
import io.ktor.client.call.body
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.client.statement.HttpResponse
import io.ktor.client.statement.bodyAsText
import io.ktor.http.HttpStatusCode
import io.ktor.http.URLProtocol
import io.ktor.http.Url
import io.ktor.http.isSuccess
import io.ktor.serialization.JsonConvertException
import kotlinx.serialization.SerializationException

internal fun HttpRequestBuilder.setWSSUrl(baseUrl: Url, vararg path: String) {
url {
@@ -282,17 +284,21 @@ suspend fun <T : Any> wrapFederationResponse(
* i.e.: '/commit-bundles' 409 for "mls-stale-message" and 409 for "federation-conflict"
*/
private suspend fun resolveStatusCodeBasedFirstOrFederated(response: HttpResponse): NetworkResponse.Error {
val responseString = response.bodyAsText()

val kaliumException = try {
val errorResponse = response.body<ErrorResponse>()
val errorResponse = KtxSerializer.json.decodeFromString<ErrorResponse>(responseString)

toStatusCodeBasedKaliumException(
response.status,
response,
errorResponse
)
} catch (exception: JsonConvertException) {
} catch (exception: SerializationException) {
try {
KaliumException.FederationConflictException(response.body<FederationConflictResponse>())
} catch (_: NoTransformationFoundException) {
val federationConflictResponse = KtxSerializer.json.decodeFromString<FederationConflictResponse>(responseString)
KaliumException.FederationConflictException(federationConflictResponse)
} catch (_: SerializationException) {
KaliumException.FederationConflictException(FederationConflictResponse(emptyList()))
}
}

0 comments on commit adae809

Please sign in to comment.