From 4023b3ea687089478a4c1129b552aa99efcc99c1 Mon Sep 17 00:00:00 2001 From: Mohamad Jaara Date: Sun, 16 Jul 2023 12:35:35 +0200 Subject: [PATCH] map composite to proto --- .../logic/data/message/ProtoContentMapper.kt | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/ProtoContentMapper.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/ProtoContentMapper.kt index d9c54437456..75ccbb6e6fc 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/ProtoContentMapper.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/ProtoContentMapper.kt @@ -31,9 +31,11 @@ import com.wire.kalium.logic.kaliumLogger import com.wire.kalium.protobuf.decodeFromByteArray import com.wire.kalium.protobuf.encodeToByteArray import com.wire.kalium.protobuf.messages.Asset +import com.wire.kalium.protobuf.messages.Button import com.wire.kalium.protobuf.messages.Calling import com.wire.kalium.protobuf.messages.Cleared import com.wire.kalium.protobuf.messages.ClientAction +import com.wire.kalium.protobuf.messages.Composite import com.wire.kalium.protobuf.messages.Confirmation import com.wire.kalium.protobuf.messages.Ephemeral import com.wire.kalium.protobuf.messages.External @@ -120,18 +122,45 @@ class ProtoContentMapperImpl( "Unexpected message content type: ${readableContent.getType()}" ) - is MessageContent.Composite -> throw IllegalArgumentException( - "Unexpected message content type: ${readableContent.getType()}" - ) - - is MessageContent.ButtonActionConfirmation -> throw IllegalArgumentException( - "Unexpected message content type: ${readableContent.getType()}" - ) + is MessageContent.Composite -> packComposite(readableContent, expectsReadConfirmation) + is MessageContent.ButtonActionConfirmation -> TODO() is MessageContent.ButtonAction -> TODO() } } + private fun packComposite( + readableContent: MessageContent.Composite, + expectsReadConfirmation: Boolean + ): GenericMessage.Content.Composite { + val items: MutableList = mutableListOf() + + readableContent.textContent?.let { + val text = packText(it, expectsReadConfirmation) + Composite.Item.Content.Text(text.value).also { + items.add(Composite.Item(it)) + } + } + readableContent.buttonList.map { + Composite.Item.Content.Button( + button = Button( + text = it.text, + id = it.id + ) + ) + }.also { + items.addAll(it.map { Composite.Item(it) }) + } + + val composite = GenericMessage.Content.Composite( + Composite( + items = items, + expectsReadConfirmation = expectsReadConfirmation + ) + ) + return composite + } + private fun mapEphemeralContent( readableContent: MessageContent.FromProto, expireAfterMillis: Long, @@ -172,13 +201,12 @@ class ProtoContentMapperImpl( is MessageContent.LastRead, is MessageContent.Reaction, is MessageContent.Receipt, + is MessageContent.Composite, + is MessageContent.ButtonAction, + is MessageContent.ButtonActionConfirmation, is MessageContent.TextEdited -> throw IllegalArgumentException( "Unexpected message content type: ${readableContent.getType()}" ) - - is MessageContent.Composite -> TODO() - is MessageContent.ButtonAction -> TODO() - is MessageContent.ButtonActionConfirmation -> TODO() } return GenericMessage.Content.Ephemeral(Ephemeral(expireAfterMillis = expireAfterMillis, content = ephemeralContent)) }