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 @@ -22,7 +22,6 @@ import io.getstream.chat.android.ReadReceipts
import io.getstream.chat.android.TypingIndicators
import io.getstream.chat.android.client.api2.model.dto.AttachmentDto
import io.getstream.chat.android.client.api2.model.dto.ChannelInfoDto
import io.getstream.chat.android.client.api2.model.dto.DeliveryReceiptsDto
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
Expand All @@ -43,10 +42,7 @@ import io.getstream.chat.android.client.api2.model.dto.DownstreamThreadInfoDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamUserDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamUserGroupDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamUserGroupMemberDto
import io.getstream.chat.android.client.api2.model.dto.PrivacySettingsDto
import io.getstream.chat.android.client.api2.model.dto.ReadReceiptsDto
import io.getstream.chat.android.client.api2.model.dto.SearchWarningDto
import io.getstream.chat.android.client.api2.model.dto.TypingIndicatorsDto
import io.getstream.chat.android.client.api2.model.response.MessageResponse
import io.getstream.chat.android.client.api2.model.response.QueryRemindersResponse
import io.getstream.chat.android.client.extensions.enrichWithCid
Expand Down Expand Up @@ -1000,34 +996,6 @@ internal class DomainMapping(
platformCircumvented = platformCircumvented ?: false,
)

/**
* Transforms [PrivacySettingsDto] to [PrivacySettings].
*/
internal fun PrivacySettingsDto.toDomain(): PrivacySettings = PrivacySettings(
typingIndicators = typing_indicators?.toDomain(),
deliveryReceipts = delivery_receipts?.toDomain(),
readReceipts = read_receipts?.toDomain(),
)

/**
* Transforms [TypingIndicatorsDto] to [TypingIndicators].
*/
internal fun TypingIndicatorsDto.toDomain(): TypingIndicators = TypingIndicators(
enabled = enabled,
)

/**
* Transforms [DeliveryReceiptsDto] to [DeliveryReceipts].
*/
internal fun DeliveryReceiptsDto.toDomain() = DeliveryReceipts(enabled = enabled)

/**
* Transforms [ReadReceiptsDto] to [ReadReceipts].
*/
internal fun ReadReceiptsDto.toDomain(): ReadReceipts = ReadReceipts(
enabled = enabled,
)

/**
* Transforms [PrivacySettingsResponse] to [PrivacySettings].
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,9 @@

package io.getstream.chat.android.client.api2.mapping

import io.getstream.chat.android.DeliveryReceipts
import io.getstream.chat.android.PrivacySettings
import io.getstream.chat.android.ReadReceipts
import io.getstream.chat.android.TypingIndicators
import io.getstream.chat.android.client.api2.model.dto.AttachmentDto
import io.getstream.chat.android.client.api2.model.dto.DeliveryReceiptsDto
import io.getstream.chat.android.client.api2.model.dto.DeviceDto
import io.getstream.chat.android.client.api2.model.dto.PrivacySettingsDto
import io.getstream.chat.android.client.api2.model.dto.ReadReceiptsDto
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
Expand Down Expand Up @@ -237,33 +230,13 @@ internal class DtoMapping(
)

/**
* Maps the domain [PrivacySettings] model to a network [PrivacySettingsDto] model.
* Maps the domain [PrivacySettings] model to the network model, which the spec shares between the
* request and the response.
*/
internal fun PrivacySettings.toDto(): PrivacySettingsDto = PrivacySettingsDto(
typing_indicators = typingIndicators?.toDto(),
read_receipts = readReceipts?.toDto(),
delivery_receipts = deliveryReceipts?.toDto(),
)

/**
* Maps the domain [TypingIndicators] model to a network [TypingIndicatorsDto] model.
*/
internal fun TypingIndicators.toDto(): TypingIndicatorsDto = TypingIndicatorsDto(
enabled = enabled,
)

/**
* Maps the domain [ReadReceipts] model to a network [ReadReceiptsDto] model.
*/
internal fun ReadReceipts.toDto(): ReadReceiptsDto = ReadReceiptsDto(
enabled = enabled,
)

/**
* Maps the domain [DeliveryReceipts] model to a network [DeliveryReceiptsDto] model.
*/
internal fun DeliveryReceipts.toDto(): DeliveryReceiptsDto = DeliveryReceiptsDto(
enabled = enabled,
internal fun PrivacySettings.toDto(): PrivacySettingsResponse = PrivacySettingsResponse(
Comment thread
andremion marked this conversation as resolved.
typingIndicators = typingIndicators?.let { TypingIndicatorsResponse(enabled = it.enabled) },
readReceipts = readReceipts?.let { ReadReceiptsResponse(enabled = it.enabled) },
deliveryReceipts = deliveryReceipts?.let { DeliveryReceiptsResponse(enabled = it.enabled) },
)

/**
Expand Down Expand Up @@ -306,17 +279,11 @@ internal class DtoMapping(
image = image,
invisible = isInvisible,
language = language,
privacySettings = privacySettings?.toResponse(),
privacySettings = privacySettings?.toDto(),
custom = extraData,
)
}

private fun PrivacySettings.toResponse(): PrivacySettingsResponse = PrivacySettingsResponse(
typingIndicators = typingIndicators?.let { TypingIndicatorsResponse(enabled = it.enabled) },
readReceipts = readReceipts?.let { ReadReceiptsResponse(enabled = it.enabled) },
deliveryReceipts = deliveryReceipts?.let { DeliveryReceiptsResponse(enabled = it.enabled) },
)

/**
* Maps the domain [ConnectedEvent] model to a network [UpstreamConnectedEventDto] model.
*/
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import com.squareup.moshi.JsonClass
import io.getstream.chat.android.core.internal.StreamHandsOff
import io.getstream.chat.android.network.models.PrivacySettingsResponse
import io.getstream.chat.android.network.models.UserMuteResponse
import java.util.Date
import io.getstream.chat.android.network.models.ChannelMute as ChannelMuteResponse
Expand All @@ -37,7 +38,7 @@
val name: String,
val image: String,
val invisible: Boolean,
val privacy_settings: PrivacySettingsDto?,
val privacy_settings: PrivacySettingsResponse?,

Check warning on line 41 in stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/dto/UserDtos.kt

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this parameter to match the regular expression ^`?[_a-z][a-zA-Z0-9]*`?$

See more on https://sonarcloud.io/project/issues?id=GetStream_stream-chat-android&issues=AaCfRlzeQzi-Va3rlKx2&open=AaCfRlzeQzi-Va3rlKx2&pullRequest=6699
val language: String,
val role: String,
val devices: List<DeviceDto>,
Expand All @@ -62,7 +63,7 @@
val image: String?,
val role: String,
val invisible: Boolean? = null,
val privacy_settings: PrivacySettingsDto?,
val privacy_settings: PrivacySettingsResponse?,

Check warning on line 66 in stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/model/dto/UserDtos.kt

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this parameter to match the regular expression ^`?[_a-z][a-zA-Z0-9]*`?$

See more on https://sonarcloud.io/project/issues?id=GetStream_stream-chat-android&issues=AaCfRlzeQzi-Va3rlKx3&open=AaCfRlzeQzi-Va3rlKx3&pullRequest=6699
val language: String?,
val banned: Boolean,
val devices: List<DeviceDto>?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,7 @@ import io.getstream.chat.android.client.api2.model.dto.DownstreamUserGroupDto
import io.getstream.chat.android.client.api2.model.dto.DownstreamUserGroupMemberDto
import io.getstream.chat.android.client.api2.model.dto.ErrorDetailDto
import io.getstream.chat.android.client.api2.model.dto.ErrorDto
import io.getstream.chat.android.client.api2.model.dto.PrivacySettingsDto
import io.getstream.chat.android.client.api2.model.dto.ReadReceiptsDto
import io.getstream.chat.android.client.api2.model.dto.SearchWarningDto
import io.getstream.chat.android.client.api2.model.dto.TypingIndicatorsDto
import io.getstream.chat.android.client.api2.model.response.DraftMessageResponse
import io.getstream.chat.android.client.api2.model.response.QueryDraftMessagesResponse
import io.getstream.chat.android.client.api2.model.response.QueryRemindersResponse
Expand Down Expand Up @@ -98,6 +95,7 @@ import io.getstream.chat.android.network.models.PollOptionResponseData
import io.getstream.chat.android.network.models.PollResponseData
import io.getstream.chat.android.network.models.PollVoteResponseData
import io.getstream.chat.android.network.models.PollVotesResponse
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
Expand Down Expand Up @@ -388,7 +386,7 @@ internal object Mother {
image: String? = randomString(),
role: String = randomString(),
invisible: Boolean? = null,
privacy_settings: PrivacySettingsDto? = null,
privacy_settings: PrivacySettingsResponse? = null,
language: String? = randomString(),
banned: Boolean = randomBoolean(),
devices: List<DeviceDto>? = emptyList(),
Expand Down Expand Up @@ -929,20 +927,6 @@ internal object Mother {
platformCircumvented = platformCircumvented,
)

fun randomPrivacySettingsDto(
typingIndicators: TypingIndicatorsDto = randomTypingIndicatorsDto(),
readReceipts: ReadReceiptsDto = randomReadReceiptsDto(),
): PrivacySettingsDto = PrivacySettingsDto(
typing_indicators = typingIndicators,
read_receipts = readReceipts,
)

fun randomTypingIndicatorsDto(enabled: Boolean = randomBoolean()): TypingIndicatorsDto =
TypingIndicatorsDto(enabled)

fun randomReadReceiptsDto(enabled: Boolean = randomBoolean()): ReadReceiptsDto =
ReadReceiptsDto(enabled)

fun randomQueryUsersRequest(
filter: FilterObject = Filters.neutral(),
offset: Int = randomInt(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package io.getstream.chat.android.client.api2.mapping

import io.getstream.chat.android.PrivacySettings
import io.getstream.chat.android.ReadReceipts
import io.getstream.chat.android.TypingIndicators
import io.getstream.chat.android.client.Mother
import io.getstream.chat.android.client.Mother.randomAppResponseFields
Expand Down Expand Up @@ -53,7 +52,6 @@ import io.getstream.chat.android.client.Mother.randomPollOptionResponseData
import io.getstream.chat.android.client.Mother.randomPollResponseData
import io.getstream.chat.android.client.Mother.randomPollVoteResponseData
import io.getstream.chat.android.client.Mother.randomPollVotesResponse
import io.getstream.chat.android.client.Mother.randomPrivacySettingsDto
import io.getstream.chat.android.client.Mother.randomQueryPollsResponse
import io.getstream.chat.android.client.Mother.randomQueryRemindersResponse
import io.getstream.chat.android.client.Mother.randomReactionGroupResponse
Expand Down Expand Up @@ -1288,18 +1286,6 @@ internal class DomainMappingTest {
assertEquals(expected, moderation)
}

@Test
fun `PrivacySettingsDto is correctly mapped to PrivacySettings`() {
val privacySettingsDto = randomPrivacySettingsDto()
val sut = Fixture().get()
val privacySettings = with(sut) { privacySettingsDto.toDomain() }
val expected = PrivacySettings(
typingIndicators = TypingIndicators(enabled = privacySettingsDto.typing_indicators?.enabled == true),
readReceipts = ReadReceipts(enabled = privacySettingsDto.read_receipts?.enabled == true),
)
assertEquals(expected, privacySettings)
}

@Test
fun `SearchWarningDto is correctly mapped to SearchWarning`() {
val searchWarningDto = randomSearchWarningDto()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,7 @@ import io.getstream.chat.android.PrivacySettings
import io.getstream.chat.android.ReadReceipts
import io.getstream.chat.android.TypingIndicators
import io.getstream.chat.android.client.api2.model.dto.AttachmentDto
import io.getstream.chat.android.client.api2.model.dto.DeliveryReceiptsDto
import io.getstream.chat.android.client.api2.model.dto.DeviceDto
import io.getstream.chat.android.client.api2.model.dto.PrivacySettingsDto
import io.getstream.chat.android.client.api2.model.dto.ReadReceiptsDto
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.UpstreamMemberDataDto
import io.getstream.chat.android.client.api2.model.dto.UpstreamUserDto
Expand Down Expand Up @@ -316,10 +312,10 @@ internal class DtoMappingTest {
)
val mapping = Fixture().get()
val dto = with(mapping) { privacySettings.toDto() }
val expected = PrivacySettingsDto(
typing_indicators = TypingIndicatorsDto(enabled = true),
read_receipts = ReadReceiptsDto(enabled = false),
delivery_receipts = DeliveryReceiptsDto(enabled = false),
val expected = PrivacySettingsResponse(
typingIndicators = TypingIndicatorsResponse(enabled = true),
readReceipts = ReadReceiptsResponse(enabled = false),
deliveryReceipts = DeliveryReceiptsResponse(enabled = false),
)
dto shouldBeEqualTo expected
}
Expand All @@ -333,10 +329,10 @@ internal class DtoMappingTest {
)
val mapping = Fixture().get()
val dto = with(mapping) { privacySettings.toDto() }
val expected = PrivacySettingsDto(
typing_indicators = TypingIndicatorsDto(enabled = true),
read_receipts = ReadReceiptsDto(enabled = false),
delivery_receipts = null,
val expected = PrivacySettingsResponse(
typingIndicators = TypingIndicatorsResponse(enabled = true),
readReceipts = ReadReceiptsResponse(enabled = false),
deliveryReceipts = null,
)
dto shouldBeEqualTo expected
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ package io.getstream.chat.android.client.parser2

import com.squareup.moshi.JsonDataException
import io.getstream.chat.android.client.api2.mapping.DomainMapping
import io.getstream.chat.android.client.api2.model.dto.PrivacySettingsDto
import io.getstream.chat.android.client.parser2.direct.PrivacySettingsAdapter
import io.getstream.chat.android.client.parser2.testdata.PrivacySettingsTestData
import io.getstream.chat.android.models.NoOpChannelTransformer
import io.getstream.chat.android.models.NoOpMessageTransformer
import io.getstream.chat.android.models.NoOpUserTransformer
import io.getstream.chat.android.network.models.PrivacySettingsResponse
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
Expand All @@ -41,18 +41,18 @@ internal class PrivacySettingsParsingTest {

private val privacySettingsAdapter = PrivacySettingsAdapter()

// region DTO path (JSON → PrivacySettingsDto → PrivacySettings)
// region Response path (JSON → PrivacySettingsResponse → PrivacySettings)

@Test
fun `DTO path - deserializes all fields`() {
val dto = parser.fromJson(PrivacySettingsTestData.jsonAllFields, PrivacySettingsDto::class.java)
fun `Response path - deserializes all fields`() {
val dto = parser.fromJson(PrivacySettingsTestData.jsonAllFields, PrivacySettingsResponse::class.java)
val privacySettings = with(domainMapping) { dto.toDomain() }
assertEquals(PrivacySettingsTestData.expectedAllFields, privacySettings)
}

@Test
fun `DTO path - deserializes with optional fields missing`() {
val dto = parser.fromJson(PrivacySettingsTestData.jsonOptionalFieldsMissing, PrivacySettingsDto::class.java)
fun `Response path - deserializes with optional fields missing`() {
val dto = parser.fromJson(PrivacySettingsTestData.jsonOptionalFieldsMissing, PrivacySettingsResponse::class.java)
val privacySettings = with(domainMapping) { dto.toDomain() }
assertEquals(PrivacySettingsTestData.expectedOptionalFieldsMissing, privacySettings)
}
Expand Down Expand Up @@ -80,7 +80,7 @@ internal class PrivacySettingsParsingTest {
@Test
fun `Both paths - same error on typing_indicators missing enabled`() {
val dtoException = assertThrows<JsonDataException> {
parser.fromJson(PrivacySettingsTestData.jsonTypingIndicatorsMissingEnabled, PrivacySettingsDto::class.java)
parser.fromJson(PrivacySettingsTestData.jsonTypingIndicatorsMissingEnabled, PrivacySettingsResponse::class.java)
}
val directException = assertThrows<JsonDataException> {
privacySettingsAdapter.fromJson(PrivacySettingsTestData.jsonTypingIndicatorsMissingEnabled)
Expand All @@ -91,7 +91,7 @@ internal class PrivacySettingsParsingTest {
@Test
fun `Both paths - same error on delivery_receipts missing enabled`() {
val dtoException = assertThrows<JsonDataException> {
parser.fromJson(PrivacySettingsTestData.jsonDeliveryReceiptsMissingEnabled, PrivacySettingsDto::class.java)
parser.fromJson(PrivacySettingsTestData.jsonDeliveryReceiptsMissingEnabled, PrivacySettingsResponse::class.java)
}
val directException = assertThrows<JsonDataException> {
privacySettingsAdapter.fromJson(PrivacySettingsTestData.jsonDeliveryReceiptsMissingEnabled)
Expand All @@ -102,7 +102,7 @@ internal class PrivacySettingsParsingTest {
@Test
fun `Both paths - same error on read_receipts missing enabled`() {
val dtoException = assertThrows<JsonDataException> {
parser.fromJson(PrivacySettingsTestData.jsonReadReceiptsMissingEnabled, PrivacySettingsDto::class.java)
parser.fromJson(PrivacySettingsTestData.jsonReadReceiptsMissingEnabled, PrivacySettingsResponse::class.java)
}
val directException = assertThrows<JsonDataException> {
privacySettingsAdapter.fromJson(PrivacySettingsTestData.jsonReadReceiptsMissingEnabled)
Expand Down
Loading
Loading