Skip to content

Commit

Permalink
Merge branch 'develop' into fix/ignore_connection_request_on_backend_…
Browse files Browse the repository at this point in the history
…disabled_rc-cherry-pick
  • Loading branch information
borichellow committed Apr 5, 2024
2 parents b6aa6ca + 20edfe6 commit f6aeeef
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ package com.wire.kalium.testservice.api.v1
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.data.message.Message
import com.wire.kalium.logic.data.message.mention.MessageMention
import com.wire.kalium.logic.data.message.receipt.DetailedReceipt
import com.wire.kalium.logic.data.message.receipt.ReceiptType
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.testservice.managed.ConversationRepository
import com.wire.kalium.testservice.managed.InstanceService
import com.wire.kalium.testservice.models.ClearConversationRequest
import com.wire.kalium.testservice.models.DeleteMessageRequest
import com.wire.kalium.testservice.models.GetMessageReceiptsRequest
import com.wire.kalium.testservice.models.GetMessagesRequest
import com.wire.kalium.testservice.models.SendButtonActionConfirmationRequest
import com.wire.kalium.testservice.models.SendButtonActionRequest
Expand Down Expand Up @@ -134,6 +136,42 @@ class ConversationResources(private val instanceService: InstanceService) {
}
}

@POST
@Path("/instance/{id}/getMessageReadReceipts")
@Operation(summary = "Get all read receipts of a specific message")
@Consumes(MediaType.APPLICATION_JSON)
fun getMessageReadReceipts(@PathParam("id") id: String, @Valid request: GetMessageReceiptsRequest): List<DetailedReceipt> {
val instance = instanceService.getInstanceOrThrow(id)
with(request) {
return runBlocking {
ConversationRepository.getMessageReceipts(
instance,
ConversationId(conversationId, conversationDomain),
messageId,
ReceiptType.READ
)
}
}
}

@POST
@Path("/instance/{id}/getMessageDeliveryReceipts")
@Operation(summary = "Get all delivery receipts of a specific message")
@Consumes(MediaType.APPLICATION_JSON)
fun getMessageDeliveryReceipts(@PathParam("id") id: String, @Valid request: GetMessageReceiptsRequest): List<DetailedReceipt> {
val instance = instanceService.getInstanceOrThrow(id)
with(request) {
return runBlocking {
ConversationRepository.getMessageReceipts(
instance,
ConversationId(conversationId, conversationDomain),
messageId,
ReceiptType.DELIVERED
)
}
}
}

// POST /api/v1/instance/{instanceId}/mute
// Mute a conversation.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import com.wire.kalium.logic.feature.conversation.ClearConversationContentUseCas
import com.wire.kalium.logic.feature.debug.BrokenState
import com.wire.kalium.logic.feature.debug.SendBrokenAssetMessageResult
import com.wire.kalium.logic.data.message.SelfDeletionTimer
import com.wire.kalium.logic.data.message.receipt.DetailedReceipt
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.message.composite.SendButtonActionConfirmationMessageUseCase
import com.wire.kalium.logic.feature.message.composite.SendButtonActionMessageUseCase
Expand Down Expand Up @@ -382,6 +383,30 @@ sealed class ConversationRepository {
throw WebApplicationException("Instance ${instance.instanceId}: Could not get recent messages")
}

suspend fun getMessageReceipts(
instance: Instance,
conversationId: ConversationId,
messageId: String,
type: ReceiptType
): List<DetailedReceipt> {
instance.coreLogic.globalScope {
when (val session = session.currentSession()) {
is CurrentSessionResult.Success -> {
instance.coreLogic.sessionScope(session.accountInfo.userId) {
log.info("Instance ${instance.instanceId}: Get receipts...")
val receipts = messages.observeMessageReceipts(conversationId, messageId, type).first()
return receipts
}
}

is CurrentSessionResult.Failure -> {
Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Session failure").build()
}
}
}
throw WebApplicationException("Instance ${instance.instanceId}: Could not get receipts from message")
}

@Suppress("LongParameterList", "LongMethod", "ThrowsCount")
suspend fun sendFile(
instance: Instance,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Wire
* Copyright (C) 2024 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.kalium.testservice.models

data class GetMessageReceiptsRequest(
val conversationDomain: String = "staging.zinfra.io",
val conversationId: String = "",
val messageId: String = "",
)

0 comments on commit f6aeeef

Please sign in to comment.