diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/MoshiChatApi.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/MoshiChatApi.kt index 14fab987464..de56ae77c2a 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/MoshiChatApi.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/MoshiChatApi.kt @@ -60,7 +60,6 @@ import io.getstream.chat.android.client.api2.model.requests.FlagRequest import io.getstream.chat.android.client.api2.model.requests.FlagUserRequest import io.getstream.chat.android.client.api2.model.requests.GuestUserRequest import io.getstream.chat.android.client.api2.model.requests.InviteMembersRequest -import io.getstream.chat.android.client.api2.model.requests.MarkDeliveredRequest import io.getstream.chat.android.client.api2.model.requests.MuteUserRequest import io.getstream.chat.android.client.api2.model.requests.PartialUpdateMessageRequest import io.getstream.chat.android.client.api2.model.requests.PartialUpdatePollRequest @@ -80,7 +79,6 @@ import io.getstream.chat.android.client.api2.model.requests.RejectInviteRequest import io.getstream.chat.android.client.api2.model.requests.ReminderRequest import io.getstream.chat.android.client.api2.model.requests.RemoveMembersRequest import io.getstream.chat.android.client.api2.model.requests.RemoveUserGroupMembersRequest -import io.getstream.chat.android.client.api2.model.requests.SendActionRequest import io.getstream.chat.android.client.api2.model.requests.SendEventRequest import io.getstream.chat.android.client.api2.model.requests.SendMessageRequest import io.getstream.chat.android.client.api2.model.requests.SyncHistoryRequest @@ -88,7 +86,6 @@ import io.getstream.chat.android.client.api2.model.requests.TruncateChannelReque import io.getstream.chat.android.client.api2.model.requests.UpdateChannelRequest import io.getstream.chat.android.client.api2.model.requests.UpdateCooldownRequest import io.getstream.chat.android.client.api2.model.requests.UpdateLiveLocationRequest -import io.getstream.chat.android.client.api2.model.requests.UpdateMemberPartialRequest import io.getstream.chat.android.client.api2.model.requests.UpdateMessageRequest import io.getstream.chat.android.client.api2.model.requests.UpdateUserGroupRequest import io.getstream.chat.android.client.api2.model.requests.UpdateUsersRequest @@ -161,14 +158,18 @@ import io.getstream.chat.android.models.querysort.QuerySorter import io.getstream.chat.android.network.models.BlockUsersRequest import io.getstream.chat.android.network.models.CastPollVoteRequest import io.getstream.chat.android.network.models.CreateDeviceRequest +import io.getstream.chat.android.network.models.DeliveredMessagePayload import io.getstream.chat.android.network.models.HideChannelRequest +import io.getstream.chat.android.network.models.MarkDeliveredRequest import io.getstream.chat.android.network.models.MarkReadRequest import io.getstream.chat.android.network.models.MarkUnreadRequest +import io.getstream.chat.android.network.models.MessageActionRequest import io.getstream.chat.android.network.models.MuteChannelRequest import io.getstream.chat.android.network.models.QueryReactionsRequest import io.getstream.chat.android.network.models.SortParamRequest import io.getstream.chat.android.network.models.UnblockUsersRequest import io.getstream.chat.android.network.models.UpdateChannelPartialRequest +import io.getstream.chat.android.network.models.UpdateMemberPartialRequest import io.getstream.chat.android.network.models.VoteData import io.getstream.log.taggedLogger import io.getstream.result.Error @@ -1155,7 +1156,9 @@ constructor( override fun markDelivered(messages: List): Call = channelApi.markDelivered( - request = MarkDeliveredRequest.create(messages), + request = MarkDeliveredRequest( + latestDeliveredMessages = messages.map { DeliveredMessagePayload(cid = it.cid, id = it.id) }, + ), ).toUnitCall() override fun markThreadRead(channelType: String, channelId: String, threadId: String): Call { @@ -1260,7 +1263,7 @@ constructor( channelType = channelType, channelId = channelId, userId = userId, - body = UpdateMemberPartialRequest(set, unset), + body = UpdateMemberPartialRequest(set = set, unset = unset), ).mapDomain { response -> response.channel_member.toDomain() } @@ -1337,11 +1340,8 @@ constructor( override fun sendAction(request: DomainSendActionRequest): Call { return messageApi.sendAction( messageId = request.messageId, - request = SendActionRequest( - channel_id = request.channelId, - message_id = request.messageId, - type = request.type, - form_data = request.formData, + request = MessageActionRequest( + formData = request.formData.entries.associate { (k, v) -> k.toString() to v.toString() }, ), ).mapDomain { response -> response.message.toDomain() diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/ChannelApi.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/ChannelApi.kt index d18e8c122f6..755710dddc9 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/ChannelApi.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/ChannelApi.kt @@ -22,7 +22,6 @@ import io.getstream.chat.android.client.api2.UrlQueryPayload import io.getstream.chat.android.client.api2.model.requests.AcceptInviteRequest import io.getstream.chat.android.client.api2.model.requests.AddMembersRequest import io.getstream.chat.android.client.api2.model.requests.InviteMembersRequest -import io.getstream.chat.android.client.api2.model.requests.MarkDeliveredRequest import io.getstream.chat.android.client.api2.model.requests.PinnedMessagesRequest import io.getstream.chat.android.client.api2.model.requests.QueryChannelRequest import io.getstream.chat.android.client.api2.model.requests.QueryChannelsRequest @@ -33,7 +32,6 @@ import io.getstream.chat.android.client.api2.model.requests.SendEventRequest import io.getstream.chat.android.client.api2.model.requests.TruncateChannelRequest import io.getstream.chat.android.client.api2.model.requests.UpdateChannelRequest import io.getstream.chat.android.client.api2.model.requests.UpdateCooldownRequest -import io.getstream.chat.android.client.api2.model.requests.UpdateMemberPartialRequest import io.getstream.chat.android.client.api2.model.requests.UpdateMemberPartialResponse import io.getstream.chat.android.client.api2.model.response.ChannelResponse import io.getstream.chat.android.client.api2.model.response.EventResponse @@ -42,10 +40,12 @@ import io.getstream.chat.android.client.api2.model.response.QueryChannelsRespons import io.getstream.chat.android.client.api2.model.response.QueryGroupedChannelsResponse import io.getstream.chat.android.client.call.RetrofitCall import io.getstream.chat.android.network.models.HideChannelRequest +import io.getstream.chat.android.network.models.MarkDeliveredRequest import io.getstream.chat.android.network.models.MarkReadRequest import io.getstream.chat.android.network.models.MarkUnreadRequest import io.getstream.chat.android.network.models.Response import io.getstream.chat.android.network.models.UpdateChannelPartialRequest +import io.getstream.chat.android.network.models.UpdateMemberPartialRequest import retrofit2.http.Body import retrofit2.http.DELETE import retrofit2.http.GET diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/MessageApi.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/MessageApi.kt index 3caeaec0e2e..23ed1a61c4a 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/MessageApi.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/endpoint/MessageApi.kt @@ -21,7 +21,6 @@ import io.getstream.chat.android.client.api2.model.requests.PartialUpdateMessage import io.getstream.chat.android.client.api2.model.requests.QueryDraftMessagesRequest import io.getstream.chat.android.client.api2.model.requests.QueryDraftsRequest import io.getstream.chat.android.client.api2.model.requests.ReactionRequest -import io.getstream.chat.android.client.api2.model.requests.SendActionRequest import io.getstream.chat.android.client.api2.model.requests.SendMessageRequest import io.getstream.chat.android.client.api2.model.requests.UpdateMessageRequest import io.getstream.chat.android.client.api2.model.response.DraftMessageResponse @@ -33,6 +32,7 @@ import io.getstream.chat.android.client.api2.model.response.ReactionResponse import io.getstream.chat.android.client.api2.model.response.ReactionsResponse import io.getstream.chat.android.client.api2.model.response.TranslateMessageRequest import io.getstream.chat.android.client.call.RetrofitCall +import io.getstream.chat.android.network.models.MessageActionRequest import io.getstream.chat.android.network.models.QueryReactionsRequest import io.getstream.chat.android.network.models.Response import retrofit2.http.Body @@ -113,7 +113,7 @@ internal interface MessageApi { @POST("/messages/{id}/action") fun sendAction( @Path("id") messageId: String, - @Body request: SendActionRequest, + @Body request: MessageActionRequest, ): RetrofitCall @POST("/messages/{id}/reaction") diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/MarkDeliveredRequest.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/MarkDeliveredRequest.kt deleted file mode 100644 index 340b5992af0..00000000000 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/MarkDeliveredRequest.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. - * - * Licensed under the Stream License; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.getstream.chat.android.client.api2.model.requests - -import com.squareup.moshi.JsonClass -import io.getstream.chat.android.models.Message - -@JsonClass(generateAdapter = true) -internal data class MarkDeliveredRequest( - val latest_delivered_messages: List, -) { - companion object { - fun create(messages: List) = MarkDeliveredRequest( - latest_delivered_messages = messages.map { info -> - DeliveredMessageDto( - cid = info.cid, - id = info.id, - ) - }, - ) - } -} - -@JsonClass(generateAdapter = true) -internal data class DeliveredMessageDto( - val cid: String, - val id: String, -) diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/UpdateMemberPartialRequest.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/DeliveredMessagePayload.kt similarity index 62% rename from stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/UpdateMemberPartialRequest.kt rename to stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/DeliveredMessagePayload.kt index df0d1d08505..a22a73e7f23 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/UpdateMemberPartialRequest.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/DeliveredMessagePayload.kt @@ -14,18 +14,26 @@ * limitations under the License. */ -package io.getstream.chat.android.client.api2.model.requests +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport", +) + +package io.getstream.chat.android.network.models -import com.squareup.moshi.JsonClass +import com.squareup.moshi.Json /** - * Used to form a partial member update request. * - * @param set Map of key-value pairs to set. - * @param unset List of keys to unset. */ -@JsonClass(generateAdapter = true) -internal data class UpdateMemberPartialRequest( - val set: Map, - val unset: List, + +@com.squareup.moshi.JsonClass(generateAdapter = true) +internal data class DeliveredMessagePayload( + @Json(name = "cid") + val cid: kotlin.String? = null, + + @Json(name = "id") + val id: kotlin.String? = null, ) diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MarkDeliveredRequest.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MarkDeliveredRequest.kt new file mode 100644 index 00000000000..2c577b53dcc --- /dev/null +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MarkDeliveredRequest.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport", +) + +package io.getstream.chat.android.network.models + +import com.squareup.moshi.Json +import kotlin.collections.List + +/** + * + */ + +@com.squareup.moshi.JsonClass(generateAdapter = true) +internal data class MarkDeliveredRequest( + @Json(name = "latest_delivered_messages") + val latestDeliveredMessages: kotlin.collections.List? = emptyList(), +) diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/SendActionRequest.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MessageActionRequest.kt similarity index 58% rename from stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/SendActionRequest.kt rename to stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MessageActionRequest.kt index 767f22ad432..e3159b11267 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/requests/SendActionRequest.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/MessageActionRequest.kt @@ -14,14 +14,24 @@ * limitations under the License. */ -package io.getstream.chat.android.client.api2.model.requests +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport", +) + +package io.getstream.chat.android.network.models + +import com.squareup.moshi.Json +import kotlin.collections.Map -import com.squareup.moshi.JsonClass +/** + * + */ -@JsonClass(generateAdapter = true) -internal data class SendActionRequest( - val channel_id: String, - val message_id: String, - val type: String, - val form_data: Map, +@com.squareup.moshi.JsonClass(generateAdapter = true) +internal data class MessageActionRequest( + @Json(name = "form_data") + val formData: kotlin.collections.Map = emptyMap(), ) diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/UpdateMemberPartialRequest.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/UpdateMemberPartialRequest.kt new file mode 100644 index 00000000000..75f0312359b --- /dev/null +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/UpdateMemberPartialRequest.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport", +) + +package io.getstream.chat.android.network.models + +import com.squareup.moshi.Json +import kotlin.collections.List +import kotlin.collections.Map + +/** + * + */ + +@com.squareup.moshi.JsonClass(generateAdapter = true) +internal data class UpdateMemberPartialRequest( + @Json(name = "unset") + val unset: kotlin.collections.List? = emptyList(), + + @Json(name = "set") + val set: kotlin.collections.Map? = emptyMap(), +) diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/MoshiChatApiTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/MoshiChatApiTest.kt index 906418893b0..d93b586b929 100644 --- a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/MoshiChatApiTest.kt +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/MoshiChatApiTest.kt @@ -51,11 +51,9 @@ import io.getstream.chat.android.client.api2.model.requests.AddUserGroupMembersR import io.getstream.chat.android.client.api2.model.requests.BanUserRequest import io.getstream.chat.android.client.api2.model.requests.CreatePollRequest import io.getstream.chat.android.client.api2.model.requests.CreateUserGroupRequest -import io.getstream.chat.android.client.api2.model.requests.DeliveredMessageDto import io.getstream.chat.android.client.api2.model.requests.FlagMessageRequest import io.getstream.chat.android.client.api2.model.requests.FlagUserRequest import io.getstream.chat.android.client.api2.model.requests.GuestUserRequest -import io.getstream.chat.android.client.api2.model.requests.MarkDeliveredRequest import io.getstream.chat.android.client.api2.model.requests.MuteUserRequest import io.getstream.chat.android.client.api2.model.requests.PartialUpdateMessageRequest import io.getstream.chat.android.client.api2.model.requests.PartialUpdatePollRequest @@ -71,11 +69,9 @@ import io.getstream.chat.android.client.api2.model.requests.QueryRemindersReques import io.getstream.chat.android.client.api2.model.requests.RejectInviteRequest import io.getstream.chat.android.client.api2.model.requests.ReminderRequest import io.getstream.chat.android.client.api2.model.requests.RemoveUserGroupMembersRequest -import io.getstream.chat.android.client.api2.model.requests.SendActionRequest import io.getstream.chat.android.client.api2.model.requests.SendEventRequest import io.getstream.chat.android.client.api2.model.requests.UpdateCooldownRequest import io.getstream.chat.android.client.api2.model.requests.UpdateLiveLocationRequest -import io.getstream.chat.android.client.api2.model.requests.UpdateMemberPartialRequest import io.getstream.chat.android.client.api2.model.requests.UpdateMemberPartialResponse import io.getstream.chat.android.client.api2.model.requests.UpdateUserGroupRequest import io.getstream.chat.android.client.api2.model.requests.UpsertPushPreferencesRequest @@ -157,10 +153,13 @@ import io.getstream.chat.android.network.models.BlockUsersRequest import io.getstream.chat.android.network.models.BlockUsersResponse import io.getstream.chat.android.network.models.CastPollVoteRequest import io.getstream.chat.android.network.models.CreateDeviceRequest +import io.getstream.chat.android.network.models.DeliveredMessagePayload import io.getstream.chat.android.network.models.HideChannelRequest import io.getstream.chat.android.network.models.ListDevicesResponse +import io.getstream.chat.android.network.models.MarkDeliveredRequest import io.getstream.chat.android.network.models.MarkReadRequest import io.getstream.chat.android.network.models.MarkUnreadRequest +import io.getstream.chat.android.network.models.MessageActionRequest import io.getstream.chat.android.network.models.MuteChannelRequest import io.getstream.chat.android.network.models.QueryReactionsRequest import io.getstream.chat.android.network.models.Response @@ -168,6 +167,7 @@ import io.getstream.chat.android.network.models.SearchRolesResponse import io.getstream.chat.android.network.models.UnblockUsersRequest import io.getstream.chat.android.network.models.UnblockUsersResponse import io.getstream.chat.android.network.models.UpdateChannelPartialRequest +import io.getstream.chat.android.network.models.UpdateMemberPartialRequest import io.getstream.chat.android.network.models.VoteData import io.getstream.chat.android.positiveRandomInt import io.getstream.chat.android.randomBoolean @@ -1467,8 +1467,8 @@ internal class MoshiChatApiTest { val result = sut.markDelivered(messages).await() // then val expectedRequest = MarkDeliveredRequest( - latest_delivered_messages = messages.map { messageInfo -> - DeliveredMessageDto( + latestDeliveredMessages = messages.map { messageInfo -> + DeliveredMessagePayload( cid = messageInfo.cid, id = messageInfo.id, ) @@ -1695,11 +1695,8 @@ internal class MoshiChatApiTest { val request = Mother.randomSendActionRequest() val result = sut.sendAction(request).await() // then - val expectedRequest = SendActionRequest( - channel_id = request.channelId, - message_id = request.messageId, - type = request.type, - form_data = request.formData, + val expectedRequest = MessageActionRequest( + formData = request.formData.entries.associate { (k, v) -> k.toString() to v.toString() }, ) result `should be instance of` expected verify(api, times(1)).sendAction(request.messageId, expectedRequest)