Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ constructor(
channelType = channelType,
channelId = channelId,
message = SendMessageRequest(
message = with(dtoMapping) { message.toDto() },
message = with(dtoMapping) { message.toMessageRequest() },
skip_push = message.skipPushNotification,
skip_enrich_url = message.skipEnrichUrl,
),
Expand All @@ -293,7 +293,7 @@ constructor(
channelType = channelType,
channelId = channelId,
message = SendMessageRequest(
message = with(dtoMapping) { message.toDto() },
message = with(dtoMapping) { message.toMessageRequest() },
),
).mapDomain { response ->
response.draft.toDomain()
Expand Down Expand Up @@ -348,7 +348,7 @@ constructor(
return messageApi.updateMessage(
messageId = message.id,
message = UpdateMessageRequest(
message = with(dtoMapping) { message.toDto() },
message = with(dtoMapping) { message.toMessageRequest() },
skip_enrich_url = message.skipEnrichUrl,
skip_push = message.skipPushNotification,
),
Expand Down Expand Up @@ -1129,7 +1129,7 @@ constructor(
return channelApi.truncateChannel(
channelType = channelType,
channelId = channelId,
body = with(dtoMapping) { TruncateChannelRequest(message = systemMessage?.toDto()) },
body = with(dtoMapping) { TruncateChannelRequest(message = systemMessage?.toMessageRequest()) },
).map(this::flattenChannel)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import io.getstream.chat.android.client.api2.model.dto.TypingIndicatorsDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamConnectedEventDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamLocationDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamMemberDataDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamMuteDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamUserDto
import io.getstream.chat.android.client.events.ConnectedEvent
Expand Down Expand Up @@ -109,43 +108,6 @@ internal class DtoMapping(
extraData = extraData,
)

/**
* Transforms [Message] to [UpstreamMessageDto].
*/
internal fun Message.toDto(): UpstreamMessageDto =
messageTransformer.transform(this)
.run {
val upstreamType = if (type in supportedUpstreamMessageTypes) type else ""
UpstreamMessageDto(
attachments = attachments.map { it.toDto() },
cid = cid,
command = command,
args = null,
html = html,
id = id,
type = upstreamType,
mentioned_users = mentionedUsersIds,
mentioned_here = mentionedHere,
mentioned_channel = mentionedChannel,
mentioned_group_ids = mentionedGroups.map(UserGroup::id),
mentioned_roles = mentionedRoles,
parent_id = parentId,
pin_expires = pinExpires,
pinned = pinned,
pinned_at = pinnedAt,
pinned_by = pinnedBy?.toDto(),
quoted_message_id = replyMessageId,
shadowed = shadowed,
show_in_channel = showInChannel,
silent = silent,
text = text,
thread_participants = threadParticipants.map { it.toDto() },
restricted_visibility = restrictedVisibility,
shared_location = sharedLocation?.toDto(),
extraData = extraData,
)
}

internal fun Location.toDto(): UpstreamLocationDto = UpstreamLocationDto(
Comment thread
andremion marked this conversation as resolved.
latitude = latitude,
longitude = longitude,
Expand Down Expand Up @@ -248,29 +210,21 @@ internal class DtoMapping(
)
}

internal fun DraftMessage.toDto(): UpstreamMessageDto = UpstreamMessageDto(
attachments = attachments.map { it.toDto() },
cid = cid,
command = command,
args = args,
/**
* Maps the domain [DraftMessage] to the generated network [MessageRequest] model. The draft endpoint
* takes the same request body as sending a message.
*/
internal fun DraftMessage.toMessageRequest(): MessageRequest = MessageRequest(
id = id,
html = "",
mentioned_users = mentionedUsersIds,
parent_id = parentId,
pin_expires = null,
pinned = null,
pinned_at = null,
pinned_by = null,
quoted_message_id = replyMessage?.id,
shadowed = false,
show_in_channel = showInChannel,
silent = silent,
text = text,
type = "regular",
thread_participants = emptyList(),
restricted_visibility = emptyList(),
shared_location = null,
extraData = extraData,
type = MessageRequest.Type.Regular,
attachments = attachments.map { it.toAttachmentRequest() },
mentionedUsers = mentionedUsersIds,
parentId = parentId,
quotedMessageId = replyMessage?.id,
showInChannel = showInChannel,
silent = silent,
custom = extraData,
)

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,44 +21,6 @@ import io.getstream.chat.android.core.internal.StreamHandsOff
import io.getstream.chat.android.network.models.Attachment
import java.util.Date

/**
* See [io.getstream.chat.android.client.parser2.adapters.UpstreamMessageDtoAdapter] for
* special [extraData] handling.
*/
@StreamHandsOff(
reason = "Field names can't be changed because [CustomObjectDtoAdapter] class uses reflections to add/remove " +
"content of [extraData] map",
)
@JsonClass(generateAdapter = true)
internal data class UpstreamMessageDto(
val attachments: List<AttachmentDto>,
val cid: String,
val command: String?,
val args: String?,
val html: String,
val id: String,
val type: String,
val mentioned_users: List<String>,
val mentioned_here: Boolean = false,
val mentioned_channel: Boolean = false,
val mentioned_group_ids: List<String> = emptyList(),
val mentioned_roles: List<String> = emptyList(),
val parent_id: String?,
val pin_expires: Date?,
val pinned: Boolean?,
val pinned_at: Date?,
val pinned_by: UpstreamUserDto?,
val quoted_message_id: String?,
val shadowed: Boolean,
val show_in_channel: Boolean,
val silent: Boolean,
val text: String,
val thread_participants: List<UpstreamUserDto>,
val restricted_visibility: List<String>,
val shared_location: UpstreamLocationDto?,
val extraData: Map<String, Any>,
) : ExtraDataDto

/**
* See [io.getstream.chat.android.client.parser2.adapters.DownstreamMessageDtoAdapter] for
* special [extraData] handling.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ package io.getstream.chat.android.client.api2.model.requests

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.client.api2.endpoint.MessageApi
import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
import io.getstream.chat.android.network.models.MessageRequest

/**
* Used to form a send message request.
Expand All @@ -32,7 +32,7 @@ import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
// REST documentation: https://getstream.io/chat/docs/rest/#messages-sendmessage
@JsonClass(generateAdapter = true)
internal data class SendMessageRequest(
val message: UpstreamMessageDto,
val message: MessageRequest,
val skip_push: Boolean = false,
val skip_enrich_url: Boolean = false,
)
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package io.getstream.chat.android.client.api2.model.requests

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
import io.getstream.chat.android.network.models.MessageRequest

/**
* Represents the body part of the truncate channel request.
Expand All @@ -26,5 +26,5 @@ import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
*/
@JsonClass(generateAdapter = true)
internal data class TruncateChannelRequest(
val message: UpstreamMessageDto?,
val message: MessageRequest?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ package io.getstream.chat.android.client.api2.model.requests

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.client.api2.endpoint.MessageApi
import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
import io.getstream.chat.android.network.models.MessageRequest

/**
* Used to form an update message request.
Expand All @@ -31,7 +31,7 @@ import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto
* */
@JsonClass(generateAdapter = true)
internal data class UpdateMessageRequest(
val message: UpstreamMessageDto,
val message: MessageRequest,
val skip_enrich_url: Boolean = false,
val skip_push: Boolean = false,
)
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ import io.getstream.chat.android.client.parser2.adapters.ReactionResponseAdapter
import io.getstream.chat.android.client.parser2.adapters.UpdatePollOptionRequestAdapter
import io.getstream.chat.android.client.parser2.adapters.UpdatePollRequestAdapter
import io.getstream.chat.android.client.parser2.adapters.UpstreamMemberDataDtoAdapter
import io.getstream.chat.android.client.parser2.adapters.UpstreamMessageDtoAdapter
import io.getstream.chat.android.client.parser2.adapters.UpstreamReactionDtoAdapter
import io.getstream.chat.android.client.parser2.adapters.UpstreamUserDtoAdapter
import io.getstream.chat.android.client.parser2.adapters.UserRequestAdapter
Expand Down Expand Up @@ -98,7 +97,6 @@ internal class MoshiChatParser(
.add(EventAdapterFactory())
.add(DownstreamMessageDtoAdapter)
.add(DownstreamModerationDetailsDtoAdapter)
.add(UpstreamMessageDtoAdapter)
.add(DownstreamChannelDtoAdapter)
.add(AttachmentDtoAdapter)
.add(DownstreamReactionDtoAdapter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import com.squareup.moshi.JsonReader
import com.squareup.moshi.JsonWriter
import com.squareup.moshi.ToJson
import io.getstream.chat.android.client.api2.model.dto.DownstreamMessageDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamMessageDto

internal object DownstreamMessageDtoAdapter :
CustomObjectDtoAdapter<DownstreamMessageDto>(DownstreamMessageDto::class) {
Expand All @@ -38,19 +37,3 @@ internal object DownstreamMessageDtoAdapter :
@Suppress("UNUSED_PARAMETER")
fun toJson(jsonWriter: JsonWriter, value: DownstreamMessageDto): Unit = error("Can't convert this to Json")
}

internal object UpstreamMessageDtoAdapter :
CustomObjectDtoAdapter<UpstreamMessageDto>(UpstreamMessageDto::class) {

@FromJson
@Suppress("UNUSED_PARAMETER")
fun fromJson(jsonReader: JsonReader): UpstreamMessageDto = error("Can't parse this from Json")

@ToJson
fun toJson(
jsonWriter: JsonWriter,
message: UpstreamMessageDto?,
mapAdapter: JsonAdapter<MutableMap<String, Any?>>,
messageAdapter: JsonAdapter<UpstreamMessageDto>,
) = serializeWithExtraData(jsonWriter, message, mapAdapter, messageAdapter)
}
Loading
Loading