diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/mapping/DomainMapping.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/mapping/DomainMapping.kt index 44a1e8ce22d..3a5ffe58a50 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/mapping/DomainMapping.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api2/mapping/DomainMapping.kt @@ -987,7 +987,7 @@ internal class DomainMapping( internal fun ChannelPushPreferencesResponse.toDomain(): PushPreference = PushPreference( level = PushPreferenceLevel.fromValue(chatLevel), disabledUntil = disabledUntil, - chatPreferences = null, + chatPreferences = chatPreferences?.toDomain(), ) internal fun ChatPreferencesResponse.toDomain(): ChatPreferences = ChatPreferences( diff --git a/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/ChannelPushPreferencesResponse.kt b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/ChannelPushPreferencesResponse.kt index b6fc8810885..b739fea4e9d 100644 --- a/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/ChannelPushPreferencesResponse.kt +++ b/stream-chat-android-client/src/main/java/io/getstream/chat/android/network/models/ChannelPushPreferencesResponse.kt @@ -28,12 +28,14 @@ import com.squareup.moshi.Json /** * */ - @com.squareup.moshi.JsonClass(generateAdapter = true) internal data class ChannelPushPreferencesResponse( @Json(name = "chat_level") - val chatLevel: kotlin.String? = null, + internal val chatLevel: String? = null, @Json(name = "disabled_until") - val disabledUntil: java.util.Date? = null, + internal val disabledUntil: java.util.Date? = null, + + @Json(name = "chat_preferences") + internal val chatPreferences: io.getstream.chat.android.network.models.ChatPreferencesResponse? = null, ) diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/mapping/DomainMappingTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/mapping/DomainMappingTest.kt index 60cfbadf96d..189591d7245 100644 --- a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/mapping/DomainMappingTest.kt +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api2/mapping/DomainMappingTest.kt @@ -82,6 +82,7 @@ import io.getstream.chat.android.models.ChannelInfo import io.getstream.chat.android.models.ChannelMute import io.getstream.chat.android.models.ChannelTransformer import io.getstream.chat.android.models.ChannelUserRead +import io.getstream.chat.android.models.ChatPreferenceToggle import io.getstream.chat.android.models.Command import io.getstream.chat.android.models.Config import io.getstream.chat.android.models.Device @@ -102,6 +103,7 @@ import io.getstream.chat.android.models.NoOpUserTransformer import io.getstream.chat.android.models.Option import io.getstream.chat.android.models.PendingMessage import io.getstream.chat.android.models.Poll +import io.getstream.chat.android.models.PushPreferenceLevel import io.getstream.chat.android.models.PushProvider import io.getstream.chat.android.models.QueryPollVotesResult import io.getstream.chat.android.models.QueryPollsResult @@ -127,6 +129,8 @@ import io.getstream.chat.android.models.VotingVisibility import io.getstream.chat.android.models.querysort.QuerySortByField.Companion.ascByName import io.getstream.chat.android.models.querysort.QuerySortByField.Companion.descByName import io.getstream.chat.android.models.querysort.QuerySorter +import io.getstream.chat.android.network.models.ChannelPushPreferencesResponse +import io.getstream.chat.android.network.models.ChatPreferencesResponse import io.getstream.chat.android.network.models.UserResponse import io.getstream.chat.android.randomBoolean import io.getstream.chat.android.randomChannel @@ -137,6 +141,7 @@ import io.getstream.chat.android.randomString import io.getstream.chat.android.randomUser import org.amshove.kluent.shouldBeEqualTo import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows @@ -1298,6 +1303,33 @@ internal class DomainMappingTest { ) } + @Test + fun `Channel push preferences keep their chat preferences`() { + val sut = Fixture().get() + + val result = with(sut) { + ChannelPushPreferencesResponse( + chatLevel = "all", + chatPreferences = ChatPreferencesResponse(directMentions = "all", threadReplies = "none"), + ).toDomain() + } + + assertEquals(PushPreferenceLevel.all, result.level) + assertEquals(ChatPreferenceToggle.all, result.chatPreferences?.directMentions) + assertEquals(ChatPreferenceToggle.none, result.chatPreferences?.threadReplies) + } + + @Test + fun `Channel push preferences without chat preferences map to null`() { + val sut = Fixture().get() + + val result = with(sut) { + ChannelPushPreferencesResponse(chatLevel = "all").toDomain() + } + + assertNull(result.chatPreferences) + } + internal class Fixture { private var currentUserIdProvider: () -> UserId? = { randomString() } private var channelTransformer: ChannelTransformer = NoOpChannelTransformer