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 @@ -1296,7 +1296,7 @@ constructor(
channel.copy(
watcherCount = response.watcher_count,
read = response.read.map {
it.toDomain(lastReceivedEventDate = channel.lastMessageAt ?: it.last_read)
it.toDomain(lastReceivedEventDate = channel.lastMessageAt ?: it.lastRead)
},
members = response.members.map { it.toDomain() },
membership = response.membership?.toDomain(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import io.getstream.chat.android.TypingIndicators
import io.getstream.chat.android.client.api2.model.dto.ChannelInfoDto
import io.getstream.chat.android.client.api2.model.dto.DeviceDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelUserRead
import io.getstream.chat.android.client.api2.model.dto.DownstreamDraftDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamFlagDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamLocationDto
Expand Down Expand Up @@ -131,6 +130,7 @@ import io.getstream.chat.android.network.models.PushPreferencesResponse
import io.getstream.chat.android.network.models.QueryPollsResponse
import io.getstream.chat.android.network.models.ReactionGroupResponse
import io.getstream.chat.android.network.models.ReactionResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import io.getstream.chat.android.network.models.UnreadCountsChannel
import io.getstream.chat.android.network.models.UnreadCountsChannelType
import io.getstream.chat.android.network.models.UnreadCountsThread
Expand Down Expand Up @@ -201,7 +201,7 @@ internal class DomainMapping(
watchers = watchers.map { it.toDomain() },
read = read.map {
it.toDomain(
lastReceivedEventDate = last_message_at ?: it.last_read,
lastReceivedEventDate = last_message_at ?: it.lastRead,
)
},
config = config?.toDomain() ?: Config(),
Expand Down Expand Up @@ -707,21 +707,21 @@ internal class DomainMapping(
}

/**
* Transform [DownstreamChannelUserRead] to [ChannelUserRead].
* Transform [ReadStateResponse] to [ChannelUserRead].
*
* @param lastReceivedEventDate the last received event date.
*/
internal fun DownstreamChannelUserRead.toDomain(
internal fun ReadStateResponse.toDomain(
lastReceivedEventDate: Date,
): ChannelUserRead =
ChannelUserRead(
user = user.toDomain(),
lastReceivedEventDate = lastReceivedEventDate,
lastRead = last_read,
unreadMessages = unread_messages,
lastReadMessageId = last_read_message_id,
lastDeliveredAt = last_delivered_at,
lastDeliveredMessageId = last_delivered_message_id,
lastRead = lastRead,
unreadMessages = unreadMessages,
lastReadMessageId = lastReadMessageId,
lastDeliveredAt = lastDeliveredAt,
lastDeliveredMessageId = lastDeliveredMessageId,
)

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package io.getstream.chat.android.client.api2.model.dto
import com.squareup.moshi.JsonClass
import io.getstream.chat.android.network.models.ChannelConfigWithInfo
import io.getstream.chat.android.network.models.ChannelMemberResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import java.util.Date

@JsonClass(generateAdapter = true)
Expand All @@ -42,7 +43,7 @@ internal data class DownstreamChannelDto(
val messages: List<DownstreamMessageDto> = emptyList(),
val members: List<ChannelMemberResponse> = emptyList(),
val watchers: List<DownstreamUserDto> = emptyList(),
val read: List<DownstreamChannelUserRead> = emptyList(),
val read: List<ReadStateResponse> = emptyList(),
// Absent for a channel whose type is no longer in the app config.
val config: ChannelConfigWithInfo? = null,
val created_by: DownstreamUserDto?,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package io.getstream.chat.android.client.api2.model.dto

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.network.models.ChannelResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import io.getstream.chat.android.network.models.ThreadParticipant
import java.util.Date

Expand Down Expand Up @@ -60,7 +61,7 @@ internal data class DownstreamThreadDto(
val parent_message: DownstreamMessageDto,
val parent_message_id: String,
val participant_count: Int,
val read: List<DownstreamChannelUserRead>?,
val read: List<ReadStateResponse>?,
Comment thread
coderabbitai[bot] marked this conversation as resolved.
val reply_count: Int?,
val thread_participants: List<ThreadParticipant>?,
val title: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ package io.getstream.chat.android.client.api2.model.response

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelUserRead
import io.getstream.chat.android.client.api2.model.dto.DownstreamDraftDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamMessageDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamPendingMessageDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamPushPreferenceDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamUserDto
import io.getstream.chat.android.network.models.ChannelMemberResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import java.util.Date

@JsonClass(generateAdapter = true)
Expand All @@ -37,7 +37,7 @@ internal data class ChannelResponse(
val members: List<ChannelMemberResponse> = emptyList(),
val membership: ChannelMemberResponse?,
val watchers: List<DownstreamUserDto> = emptyList(),
val read: List<DownstreamChannelUserRead> = emptyList(),
val read: List<ReadStateResponse> = emptyList(),
val watcher_count: Int = 0,
val hidden: Boolean?,
val hide_messages_before: Date?,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* 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

/**
*
*/
@com.squareup.moshi.JsonClass(generateAdapter = true)
internal data class ReadStateResponse(
@Json(name = "last_read")
internal val lastRead: java.util.Date,

@Json(name = "unread_messages")
internal val unreadMessages: Int,

@Json(name = "user")
internal val user: io.getstream.chat.android.network.models.UserResponse,

@Json(name = "last_delivered_at")
internal val lastDeliveredAt: java.util.Date? = null,

@Json(name = "last_delivered_message_id")
internal val lastDeliveredMessageId: String? = null,

@Json(name = "last_read_message_id")
internal val lastReadMessageId: String? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import io.getstream.chat.android.client.api.models.UpdatePollRequest
import io.getstream.chat.android.client.api2.model.dto.ChannelInfoDto
import io.getstream.chat.android.client.api2.model.dto.DeviceDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelUserRead
import io.getstream.chat.android.client.api2.model.dto.DownstreamDraftDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamDraftMessageDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamFlagDto
Expand Down Expand Up @@ -95,6 +94,7 @@ import io.getstream.chat.android.network.models.PrivacySettingsResponse
import io.getstream.chat.android.network.models.QueryPollsResponse
import io.getstream.chat.android.network.models.ReactionGroupResponse
import io.getstream.chat.android.network.models.ReactionResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import io.getstream.chat.android.network.models.ThreadParticipant
import io.getstream.chat.android.network.models.UnblockUsersResponse
import io.getstream.chat.android.network.models.UnreadCountsChannel
Expand Down Expand Up @@ -452,7 +452,7 @@ internal object Mother {
messages: List<DownstreamMessageDto> = emptyList(),
members: List<ChannelMemberResponse> = emptyList(),
watchers: List<DownstreamUserDto> = emptyList(),
read: List<DownstreamChannelUserRead> = emptyList(),
read: List<ReadStateResponse> = emptyList(),
config: ChannelConfigWithInfo = randomChannelConfigWithInfo(),
created_by: DownstreamUserDto? = randomDownstreamUserDto(),
team: String = randomString(),
Expand Down Expand Up @@ -707,20 +707,20 @@ internal object Mother {
extraData = extraData,
)

fun randomDownstreamChannelUserRead(
user: DownstreamUserDto = randomDownstreamUserDto(),
fun randomReadStateResponse(
user: UserResponse = randomUserResponse(),
lastRead: Date = randomDate(),
unreadMessages: Int = randomInt(),
lastReadMessageId: String? = randomStringOrNull(),
lastDeliveredAt: Date? = randomDateOrNull(),
lastDeliveredMessageId: String? = randomStringOrNull(),
) = DownstreamChannelUserRead(
) = ReadStateResponse(
user = user,
last_read = lastRead,
unread_messages = unreadMessages,
last_read_message_id = lastReadMessageId,
last_delivered_at = lastDeliveredAt,
last_delivered_message_id = lastDeliveredMessageId,
lastRead = lastRead,
unreadMessages = unreadMessages,
lastReadMessageId = lastReadMessageId,
lastDeliveredAt = lastDeliveredAt,
lastDeliveredMessageId = lastDeliveredMessageId,
)

fun randomGetOGResponse(
Expand Down Expand Up @@ -931,7 +931,7 @@ internal object Mother {
deletedAt: Date? = randomDateOrNull(),
title: String = randomString(),
latestReplies: List<DownstreamMessageDto> = listOf(randomDownstreamMessageDto()),
read: List<DownstreamChannelUserRead> = listOf(randomDownstreamChannelUserRead()),
read: List<ReadStateResponse> = listOf(randomReadStateResponse()),
replyCount: Int = randomInt(),
draft: DownstreamDraftDto? = randomDownstreamDraftDto(),
extraData: Map<String, Any> = randomExtraData(maxPossibleEntries = 2),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import io.getstream.chat.android.client.Mother.randomChannelResponse
import io.getstream.chat.android.client.Mother.randomCommandDto
import io.getstream.chat.android.client.Mother.randomDeviceResponse
import io.getstream.chat.android.client.Mother.randomDownstreamChannelDto
import io.getstream.chat.android.client.Mother.randomDownstreamChannelUserRead
import io.getstream.chat.android.client.Mother.randomDownstreamDraftDto
import io.getstream.chat.android.client.Mother.randomDownstreamDraftMessageDto
import io.getstream.chat.android.client.Mother.randomDownstreamFlagDto
Expand All @@ -53,6 +52,7 @@ import io.getstream.chat.android.client.Mother.randomQueryPollsResponse
import io.getstream.chat.android.client.Mother.randomQueryRemindersResponse
import io.getstream.chat.android.client.Mother.randomReactionGroupResponse
import io.getstream.chat.android.client.Mother.randomReactionResponse
import io.getstream.chat.android.client.Mother.randomReadStateResponse
import io.getstream.chat.android.client.Mother.randomRoleDto
import io.getstream.chat.android.client.Mother.randomSearchWarningDto
import io.getstream.chat.android.client.Mother.randomThreadParticipantDto
Expand Down Expand Up @@ -1067,21 +1067,21 @@ internal class DomainMappingTest {
}

@Test
fun `DownstreamChannelUserRead is correctly mapped to ChannelUserRead`() {
val downstreamChannelUserRead = randomDownstreamChannelUserRead()
fun `ReadStateResponse is correctly mapped to ChannelUserRead`() {
val readStateResponse = randomReadStateResponse()
val lastReceivedEventDate = randomDate()
val sut = Fixture().get()
val channelUserRead = with(sut) {
downstreamChannelUserRead.toDomain(lastReceivedEventDate)
readStateResponse.toDomain(lastReceivedEventDate)
}
val expected = ChannelUserRead(
user = with(sut) { downstreamChannelUserRead.user.toDomain() },
lastRead = downstreamChannelUserRead.last_read,
unreadMessages = downstreamChannelUserRead.unread_messages,
lastReadMessageId = downstreamChannelUserRead.last_read_message_id,
user = with(sut) { readStateResponse.user.toDomain() },
lastRead = readStateResponse.lastRead,
unreadMessages = readStateResponse.unreadMessages,
lastReadMessageId = readStateResponse.lastReadMessageId,
lastReceivedEventDate = lastReceivedEventDate,
lastDeliveredAt = downstreamChannelUserRead.last_delivered_at,
lastDeliveredMessageId = downstreamChannelUserRead.last_delivered_message_id,
lastDeliveredAt = readStateResponse.lastDeliveredAt,
lastDeliveredMessageId = readStateResponse.lastDeliveredMessageId,
)

assertEquals(expected, channelUserRead)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package io.getstream.chat.android.client.parser2.testdata

import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamChannelUserRead
import io.getstream.chat.android.models.ChannelCapabilities
import io.getstream.chat.android.network.models.ChannelConfigWithInfo
import io.getstream.chat.android.network.models.ChannelMemberResponse
import io.getstream.chat.android.network.models.ChannelOwnCapability
import io.getstream.chat.android.network.models.ChannelResponse
import io.getstream.chat.android.network.models.ReadStateResponse
import org.intellij.lang.annotations.Language
import java.util.Date
import io.getstream.chat.android.network.models.Command as CommandDto
Expand Down Expand Up @@ -150,7 +150,7 @@ internal object ChannelDtoTestData {
"watchers": [${UserDtoTestData.downstreamJson}],
"read": [
{
"user": ${UserDtoTestData.downstreamJson},
"user": ${UserDtoTestData.userResponseJson},
"last_read": "2020-06-10T11:04:31.0Z",
"unread_messages": 1,
"last_read_message_id": "messageId"
Expand Down Expand Up @@ -216,11 +216,11 @@ internal object ChannelDtoTestData {
),
watchers = listOf(UserDtoTestData.downstreamUser),
read = listOf(
DownstreamChannelUserRead(
user = UserDtoTestData.downstreamUser,
last_read = Date(1591787071000),
unread_messages = 1,
last_read_message_id = "messageId",
ReadStateResponse(
user = UserDtoTestData.userResponse,
lastRead = Date(1591787071000),
unreadMessages = 1,
lastReadMessageId = "messageId",
),
),
config = expectedConfig,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package io.getstream.chat.android.client.parser2.testdata

import io.getstream.chat.android.client.api2.model.dto.DownstreamThreadDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamThreadInfoDto
import io.getstream.chat.android.network.models.ReadStateResponse
import io.getstream.chat.android.network.models.ThreadParticipant
import org.intellij.lang.annotations.Language
import java.util.Date
Expand All @@ -40,7 +41,14 @@ internal object ThreadDtoTestData {
"parent_message": ${MessageDtoTestData.downstreamJsonWithoutExtraData},
"parent_message_id": "parent_msg_id",
"participant_count": 5,
"read": [],
"read": [
{
"user": ${UserDtoTestData.userResponseJson},
"last_read": "2020-06-10T11:04:31.0Z",
"unread_messages": 1,
"last_read_message_id": "messageId"
}
],
"reply_count": 10,
"thread_participants": [
{
Expand Down Expand Up @@ -86,7 +94,14 @@ internal object ThreadDtoTestData {
parent_message = MessageDtoTestData.downstreamMessageWithoutExtraData,
parent_message_id = "parent_msg_id",
participant_count = 5,
read = emptyList(),
read = listOf(
ReadStateResponse(
user = UserDtoTestData.userResponse,
lastRead = Date(1591787071000),
unreadMessages = 1,
lastReadMessageId = "messageId",
),
),
reply_count = 10,
thread_participants = listOf(
ThreadParticipant(
Expand Down
Loading