diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api/interceptor/HttpLoggingInterceptorTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api/interceptor/HttpLoggingInterceptorTest.kt new file mode 100644 index 00000000000..fb1424ad51a --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/api/interceptor/HttpLoggingInterceptorTest.kt @@ -0,0 +1,258 @@ +/* + * 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.api.interceptor + +import io.getstream.chat.android.client.Mother +import io.getstream.chat.android.client.api.FakeChain +import io.getstream.chat.android.client.api.FakeResponse +import io.getstream.chat.android.randomString +import io.getstream.log.Priority +import io.getstream.log.StreamLog +import io.getstream.log.StreamLogger +import okhttp3.Interceptor +import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.Protocol +import okhttp3.Request +import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import okhttp3.ResponseBody +import okhttp3.ResponseBody.Companion.toResponseBody +import okio.Buffer +import okio.BufferedSink +import okio.GzipSink +import okio.GzipSource +import okio.buffer +import org.amshove.kluent.invoking +import org.amshove.kluent.shouldBeEqualTo +import org.amshove.kluent.shouldContain +import org.amshove.kluent.shouldThrow +import org.junit.After +import org.junit.Before +import org.junit.Test +import java.io.IOException + +internal class HttpLoggingInterceptorTest { + + private val interceptor = HttpLoggingInterceptor() + private val logger = RecordingStreamLogger() + + @Before + fun setUp() { + StreamLog.install(logger) + StreamLog.setValidator { _, _ -> true } + } + + @After + fun tearDown() { + StreamLog.unInstall() + // Restore the default error-only validator so the permissive one does not leak to other tests. + StreamLog.setValidator { priority, _ -> priority.level >= Priority.ERROR.level } + } + + @Test + fun `Should proceed without logging when logger is not installed`() { + StreamLog.unInstall() + val chain = FakeChain(FakeResponse(200)) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + } + + @Test + fun `Should proceed request without body`() { + val chain = FakeChain(FakeResponse(200, FakeResponse.Body("{}"))) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + requireNotNull(response.body).string() shouldBeEqualTo "{}" + } + + @Test + fun `Should proceed request with plain text body`() { + val chain = FakeChain( + FakeResponse(200, FakeResponse.Body("{}")), + request = Mother.randomPostRequest(), + ) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + } + + @Test + fun `Should proceed request with unknown encoded body`() { + val request = Request.Builder() + .url("https://hello.url") + .header("Content-Encoding", "br") + .post(randomString().toRequestBody()) + .build() + val chain = FakeChain(FakeResponse(200, FakeResponse.Body("{}")), request = request) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + logger.messages shouldContain "--> END POST (encoded body omitted)" + } + + @Test + fun `Should proceed request with binary body`() { + val request = Request.Builder() + .url("https://hello.url") + .post(BINARY_CONTENT.toRequestBody()) + .build() + val chain = FakeChain(FakeResponse(200, FakeResponse.Body("{}")), request = request) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + logger.messages shouldContain "--> END POST (binary 3-byte body omitted)" + } + + @Test + fun `Should proceed request with duplex body`() { + val request = Request.Builder() + .url("https://hello.url") + .post(FakeRequestBody(duplex = true)) + .build() + val chain = FakeChain(FakeResponse(200, FakeResponse.Body("{}")), request = request) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + logger.messages shouldContain "--> END POST (duplex request body omitted)" + } + + @Test + fun `Should proceed request with one-shot body`() { + val request = Request.Builder() + .url("https://hello.url") + .post(FakeRequestBody(oneShot = true)) + .build() + val chain = FakeChain(FakeResponse(200, FakeResponse.Body("{}")), request = request) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + logger.messages shouldContain "--> END POST (one-shot body omitted)" + } + + @Test + fun `Should proceed response without promised body`() { + val chain = FakeChain(FakeResponse(204, FakeResponse.Body(""))) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 204 + } + + @Test + fun `Should proceed response with binary body`() { + val chain = FakeChain(FakeResponse(200, FakeResponse.Body(BINARY_CONTENT))) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + logger.messages shouldContain "<-- END HTTP (binary 3-byte body omitted)" + } + + @Test + fun `Should proceed response with unknown encoded body`() { + val chain = FixedResponseChain( + headers = mapOf("Content-Encoding" to "br"), + body = "{}".toResponseBody("application/json".toMediaType()), + ) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + requireNotNull(response.body).string() shouldBeEqualTo "{}" + } + + @Test + fun `Should proceed response with gzip encoded body`() { + val gzipped = Buffer() + GzipSink(gzipped).buffer().use { it.writeUtf8("""{"key":"value"}""") } + val chain = FixedResponseChain( + headers = mapOf("Content-Encoding" to "gzip"), + body = gzipped.readByteString().toResponseBody("application/json".toMediaType()), + ) + + val response = interceptor.intercept(chain) + + response.code shouldBeEqualTo 200 + val body = requireNotNull(response.body) + GzipSource(body.source()).buffer().readUtf8() shouldBeEqualTo """{"key":"value"}""" + } + + @Test + fun `Should rethrow failure from the chain`() { + val chain = ThrowingChain() + + invoking { interceptor.intercept(chain) } shouldThrow IOException::class + } + + private companion object { + /** + * Non-whitespace ISO control characters which make the interceptor treat the body as binary. + */ + const val BINARY_CONTENT: String = "\u0000\u0001\u0002" + } + + private class FakeRequestBody( + private val duplex: Boolean = false, + private val oneShot: Boolean = false, + ) : RequestBody() { + override fun contentType(): MediaType? = null + override fun isDuplex(): Boolean = duplex + override fun isOneShot(): Boolean = oneShot + override fun writeTo(sink: BufferedSink) { /* No-Op */ } + } + + private class FixedResponseChain( + private val headers: Map, + private val body: ResponseBody, + private val delegate: FakeChain = FakeChain(FakeResponse(200)), + ) : Interceptor.Chain by delegate { + override fun proceed(request: Request): Response = + Response.Builder() + .code(200) + .request(request) + .protocol(Protocol.HTTP_2) + .message("ok") + .apply { headers.forEach { (name, value) -> header(name, value) } } + .body(body) + .build() + } + + private class ThrowingChain( + private val delegate: FakeChain = FakeChain(FakeResponse(200)), + ) : Interceptor.Chain by delegate { + override fun proceed(request: Request): Response = throw IOException("failure") + } + + private class RecordingStreamLogger : StreamLogger { + val messages = mutableListOf() + + override fun log(priority: Priority, tag: String, message: String, throwable: Throwable?) { + messages += message + } + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/Mother.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/Mother.kt index b0531a93b49..44a915ed082 100644 --- a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/Mother.kt +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/Mother.kt @@ -23,11 +23,16 @@ import io.getstream.chat.android.client.internal.offline.repository.domain.chann import io.getstream.chat.android.client.internal.offline.repository.domain.channel.member.internal.MemberEntity import io.getstream.chat.android.client.internal.offline.repository.domain.channel.userread.internal.ChannelUserReadEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.AttachmentEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.ReplyAttachmentEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.UploadStateEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.AnswerEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.LocationEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.MessageEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.MessageInnerEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.OptionEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.ReactionGroupEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.ReminderInfoEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.VoteEntity import io.getstream.chat.android.client.internal.offline.repository.domain.queryChannels.internal.QueryChannelsEntity import io.getstream.chat.android.client.internal.offline.repository.domain.reaction.internal.ReactionEntity import io.getstream.chat.android.client.internal.offline.repository.domain.threads.internal.ThreadEntity @@ -48,6 +53,7 @@ import io.getstream.chat.android.models.querysort.QuerySorter import io.getstream.chat.android.randomBoolean import io.getstream.chat.android.randomCID import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomDateBefore import io.getstream.chat.android.randomDateOrNull import io.getstream.chat.android.randomDouble import io.getstream.chat.android.randomInt @@ -201,6 +207,102 @@ internal fun randomMessageEntity( ownReactions = ownReactions, ) +internal fun randomAttachmentEntity( + id: String = randomString(), + messageId: String = randomString(), + authorName: String? = randomStringOrNull(), + titleLink: String? = randomStringOrNull(), + authorLink: String? = randomStringOrNull(), + thumbUrl: String? = randomStringOrNull(), + imageUrl: String? = randomStringOrNull(), + assetUrl: String? = randomStringOrNull(), + ogUrl: String? = randomStringOrNull(), + mimeType: String? = randomStringOrNull(), + fileSize: Int = randomInt(), + title: String? = randomStringOrNull(), + text: String? = randomStringOrNull(), + type: String? = randomStringOrNull(), + image: String? = randomStringOrNull(), + name: String? = randomStringOrNull(), + fallback: String? = randomStringOrNull(), + uploadFilePath: String? = randomStringOrNull(), + originalHeight: Int? = randomInt(), + originalWidth: Int? = randomInt(), + uploadState: UploadStateEntity? = null, + extraData: Map = emptyMap(), +): AttachmentEntity = AttachmentEntity( + id = id, + messageId = messageId, + authorName = authorName, + titleLink = titleLink, + authorLink = authorLink, + thumbUrl = thumbUrl, + imageUrl = imageUrl, + assetUrl = assetUrl, + ogUrl = ogUrl, + mimeType = mimeType, + fileSize = fileSize, + title = title, + text = text, + type = type, + image = image, + name = name, + fallback = fallback, + uploadFilePath = uploadFilePath, + originalHeight = originalHeight, + originalWidth = originalWidth, + uploadState = uploadState, + extraData = extraData, +) + +internal fun randomReplyAttachmentEntity( + id: String = randomString(), + messageId: String = randomString(), + authorName: String? = randomStringOrNull(), + titleLink: String? = randomStringOrNull(), + authorLink: String? = randomStringOrNull(), + thumbUrl: String? = randomStringOrNull(), + imageUrl: String? = randomStringOrNull(), + assetUrl: String? = randomStringOrNull(), + ogUrl: String? = randomStringOrNull(), + mimeType: String? = randomStringOrNull(), + fileSize: Int = randomInt(), + title: String? = randomStringOrNull(), + text: String? = randomStringOrNull(), + type: String? = randomStringOrNull(), + image: String? = randomStringOrNull(), + name: String? = randomStringOrNull(), + fallback: String? = randomStringOrNull(), + uploadFilePath: String? = randomStringOrNull(), + originalHeight: Int? = randomInt(), + originalWidth: Int? = randomInt(), + uploadState: UploadStateEntity? = null, + extraData: Map = emptyMap(), +): ReplyAttachmentEntity = ReplyAttachmentEntity( + id = id, + messageId = messageId, + authorName = authorName, + titleLink = titleLink, + authorLink = authorLink, + thumbUrl = thumbUrl, + imageUrl = imageUrl, + assetUrl = assetUrl, + ogUrl = ogUrl, + mimeType = mimeType, + fileSize = fileSize, + title = title, + text = text, + type = type, + image = image, + name = name, + fallback = fallback, + uploadFilePath = uploadFilePath, + originalHeight = originalHeight, + originalWidth = originalWidth, + uploadState = uploadState, + extraData = extraData, +) + internal fun randomReminderInfoEntity( remindAt: Date? = randomDateOrNull(), createdAt: Date = randomDate(), @@ -394,3 +496,45 @@ internal fun randomChannelEntity( activeLiveLocations = activeLiveLocations, messageCount = messageCount, ) + +internal fun randomAnswerEntity( + id: String = randomString(), + pollId: String = randomString(), + text: String = randomString(), + createdAt: Date = randomDateBefore(Date()), + updatedAt: Date = randomDateBefore(Date()), + userId: String? = randomStringOrNull(), +): AnswerEntity = AnswerEntity( + id = id, + pollId = pollId, + text = text, + createdAt = createdAt, + updatedAt = updatedAt, + userId = userId, +) + +internal fun randomOptionEntity( + id: String = randomString(), + text: String = randomString(), + extraData: Map = mapOf(randomString() to randomString()), +): OptionEntity = OptionEntity( + id = id, + text = text, + extraData = extraData, +) + +internal fun randomVoteEntity( + id: String = randomString(), + pollId: String = randomString(), + optionId: String = randomString(), + createdAt: Date = randomDateBefore(Date()), + updatedAt: Date = randomDateBefore(Date()), + userId: String? = randomStringOrNull(), +): VoteEntity = VoteEntity( + id = id, + pollId = pollId, + optionId = optionId, + createdAt = createdAt, + updatedAt = updatedAt, + userId = userId, +) diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/AnswerConverterTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/AnswerConverterTest.kt new file mode 100644 index 00000000000..57c0e749582 --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/AnswerConverterTest.kt @@ -0,0 +1,90 @@ +/* + * 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.internal.offline.repository.database.converter + +import io.getstream.chat.android.client.internal.offline.randomAnswerEntity +import io.getstream.chat.android.client.internal.offline.repository.database.converter.internal.AnswerConverter +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.AnswerEntity +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class AnswerConverterTest { + + private val sut = AnswerConverter() + + @Test + fun `stringToAnswer should return null for null input`() { + assertNull(sut.stringToAnswer(null)) + } + + @Test + fun `answerToString should return null for null input`() { + assertNull(sut.answerToString(null)) + } + + @Test + fun `answer should survive a round trip`() { + val answer = randomAnswerEntity() + + val result = requireNotNull(sut.stringToAnswer(sut.answerToString(answer))) + + assertEquals(answer.id, result.id) + assertEquals(answer.pollId, result.pollId) + assertEquals(answer.text, result.text) + assertEquals(answer.createdAt, result.createdAt) + assertEquals(answer.updatedAt, result.updatedAt) + assertEquals(answer.userId, result.userId) + } + + @Test + fun `answer without user id should survive a round trip`() { + val answer = randomAnswerEntity(userId = null) + + val result = requireNotNull(sut.stringToAnswer(sut.answerToString(answer))) + + assertEquals(answer.id, result.id) + assertNull(result.userId) + } + + @Test + fun `stringToAnswerList should return empty list for null or blank input`() { + assertEquals(emptyList(), sut.stringToAnswerList(null)) + assertEquals(emptyList(), sut.stringToAnswerList("")) + assertEquals(emptyList(), sut.stringToAnswerList("null")) + } + + @Test + fun `answerListToString should return null for null input`() { + assertNull(sut.answerListToString(null)) + } + + @Test + fun `answer list should survive a round trip`() { + val answer = randomAnswerEntity() + + val result = requireNotNull(sut.stringToAnswerList(sut.answerListToString(listOf(answer)))) + + assertEquals(1, result.size) + assertEquals(answer.id, result.first().id) + assertEquals(answer.pollId, result.first().pollId) + assertEquals(answer.text, result.first().text) + assertEquals(answer.createdAt, result.first().createdAt) + assertEquals(answer.updatedAt, result.first().updatedAt) + assertEquals(answer.userId, result.first().userId) + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/OptionConverterTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/OptionConverterTest.kt new file mode 100644 index 00000000000..7491f9659e5 --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/OptionConverterTest.kt @@ -0,0 +1,74 @@ +/* + * 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.internal.offline.repository.database.converter + +import io.getstream.chat.android.client.internal.offline.randomOptionEntity +import io.getstream.chat.android.client.internal.offline.repository.database.converter.internal.OptionConverter +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.OptionEntity +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class OptionConverterTest { + + private val sut = OptionConverter() + + @Test + fun `stringToOption should return null for null input`() { + assertNull(sut.stringToOption(null)) + } + + @Test + fun `optionToString should return null for null input`() { + assertNull(sut.optionToString(null)) + } + + @Test + fun `option should survive a round trip`() { + val option = randomOptionEntity() + + val result = requireNotNull(sut.stringToOption(sut.optionToString(option))) + + assertEquals(option.id, result.id) + assertEquals(option.text, result.text) + assertEquals(option.extraData, result.extraData) + } + + @Test + fun `stringToOptionList should return empty list for null or blank input`() { + assertEquals(emptyList(), sut.stringToOptionList(null)) + assertEquals(emptyList(), sut.stringToOptionList("")) + assertEquals(emptyList(), sut.stringToOptionList("null")) + } + + @Test + fun `optionListToString should return null for null input`() { + assertNull(sut.optionListToString(null)) + } + + @Test + fun `option list should survive a round trip`() { + val option = randomOptionEntity() + + val result = requireNotNull(sut.stringToOptionList(sut.optionListToString(listOf(option)))) + + assertEquals(1, result.size) + assertEquals(option.id, result.first().id) + assertEquals(option.text, result.first().text) + assertEquals(option.extraData, result.first().extraData) + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/QuerySortParserTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/QuerySortParserTest.kt new file mode 100644 index 00000000000..8cbb3b4ca4e --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/QuerySortParserTest.kt @@ -0,0 +1,142 @@ +/* + * 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.internal.offline.repository.database.converter + +import io.getstream.chat.android.client.internal.offline.repository.database.converter.internal.QuerySortParser +import io.getstream.chat.android.models.Channel +import io.getstream.chat.android.models.querysort.QuerySortByField +import io.getstream.chat.android.models.querysort.QuerySortByField.Companion.ascByName +import io.getstream.chat.android.models.querysort.QuerySorter +import io.getstream.chat.android.models.querysort.SortDirection +import io.getstream.chat.android.models.querysort.internal.SortAttribute +import io.getstream.chat.android.models.querysort.internal.SortSpecification +import org.amshove.kluent.shouldBeEqualTo +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows + +internal class QuerySortParserTest { + + private val parser = QuerySortParser() + + @Test + fun `fromRawInfo should create an ascending sort`() { + val specs = listOf( + mapOf( + QuerySorter.KEY_FIELD_NAME to "member_count", + QuerySorter.KEY_DIRECTION to SortDirection.ASC.value, + ), + ) + + val result = parser.fromRawInfo(specs) + + result shouldBeEqualTo QuerySortByField.ascByName("member_count") + } + + @Test + fun `fromRawInfo should create a descending sort`() { + val specs = listOf( + mapOf( + QuerySorter.KEY_FIELD_NAME to "member_count", + QuerySorter.KEY_DIRECTION to SortDirection.DESC.value, + ), + ) + + val result = parser.fromRawInfo(specs) + + result shouldBeEqualTo QuerySortByField.descByName("member_count") + } + + @Test + fun `fromRawInfo should combine multiple sort specs`() { + val specs = listOf( + mapOf( + QuerySorter.KEY_FIELD_NAME to "last_message_at", + QuerySorter.KEY_DIRECTION to SortDirection.DESC.value, + ), + mapOf( + QuerySorter.KEY_FIELD_NAME to "created_at", + QuerySorter.KEY_DIRECTION to SortDirection.ASC.value, + ), + ) + + val result = parser.fromRawInfo(specs) + + result shouldBeEqualTo QuerySortByField.descByName("last_message_at").ascByName("created_at") + } + + @Test + fun `fromRawInfo should create an empty sort for empty specs`() { + val result = parser.fromRawInfo(emptyList()) + + result shouldBeEqualTo QuerySortByField() + } + + @Test + fun `fromRawInfo should throw when field name is missing`() { + val specs = listOf( + mapOf(QuerySorter.KEY_DIRECTION to SortDirection.ASC.value), + ) + + assertThrows { parser.fromRawInfo(specs) } + } + + @Test + fun `fromRawInfo should throw when direction is missing`() { + val specs = listOf( + mapOf(QuerySorter.KEY_FIELD_NAME to "member_count"), + ) + + assertThrows { parser.fromRawInfo(specs) } + } + + @Test + fun `fromRawInfo should throw for an unsupported direction`() { + val specs = listOf( + mapOf( + QuerySorter.KEY_FIELD_NAME to "member_count", + QuerySorter.KEY_DIRECTION to 0, + ), + ) + + assertThrows { parser.fromRawInfo(specs) } + } + + @Test + fun `fromSpecifications should create sorts for each specification`() { + val specs = listOf( + SortSpecification( + sortAttribute = SortAttribute.FieldNameSortAttribute("last_message_at"), + sortDirection = SortDirection.DESC, + ), + SortSpecification( + sortAttribute = SortAttribute.FieldNameSortAttribute("created_at"), + sortDirection = SortDirection.ASC, + ), + ) + + val result = parser.fromSpecifications(specs) + + result shouldBeEqualTo QuerySortByField.descByName("last_message_at").ascByName("created_at") + } + + @Test + fun `fromSpecifications should create an empty sort for empty specs`() { + val result = parser.fromSpecifications(emptyList()) + + result shouldBeEqualTo QuerySortByField() + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/VoteConverterTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/VoteConverterTest.kt new file mode 100644 index 00000000000..7ae7cb1d6c6 --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/database/converter/VoteConverterTest.kt @@ -0,0 +1,90 @@ +/* + * 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.internal.offline.repository.database.converter + +import io.getstream.chat.android.client.internal.offline.randomVoteEntity +import io.getstream.chat.android.client.internal.offline.repository.database.converter.internal.VoteConverter +import io.getstream.chat.android.client.internal.offline.repository.domain.message.internal.VoteEntity +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class VoteConverterTest { + + private val sut = VoteConverter() + + @Test + fun `stringToVote should return null for null input`() { + assertNull(sut.stringToVote(null)) + } + + @Test + fun `voteToString should return null for null input`() { + assertNull(sut.voteToString(null)) + } + + @Test + fun `vote should survive a round trip`() { + val vote = randomVoteEntity() + + val result = requireNotNull(sut.stringToVote(sut.voteToString(vote))) + + assertEquals(vote.id, result.id) + assertEquals(vote.pollId, result.pollId) + assertEquals(vote.optionId, result.optionId) + assertEquals(vote.createdAt, result.createdAt) + assertEquals(vote.updatedAt, result.updatedAt) + assertEquals(vote.userId, result.userId) + } + + @Test + fun `vote without user id should survive a round trip`() { + val vote = randomVoteEntity(userId = null) + + val result = requireNotNull(sut.stringToVote(sut.voteToString(vote))) + + assertEquals(vote.id, result.id) + assertNull(result.userId) + } + + @Test + fun `stringToVoteList should return empty list for null or blank input`() { + assertEquals(emptyList(), sut.stringToVoteList(null)) + assertEquals(emptyList(), sut.stringToVoteList("")) + assertEquals(emptyList(), sut.stringToVoteList("null")) + } + + @Test + fun `voteListToString should return null for null input`() { + assertNull(sut.voteListToString(null)) + } + + @Test + fun `vote list should survive a round trip`() { + val vote = randomVoteEntity() + + val result = requireNotNull(sut.stringToVoteList(sut.voteListToString(listOf(vote)))) + + assertEquals(1, result.size) + assertEquals(vote.id, result.first().id) + assertEquals(vote.pollId, result.first().pollId) + assertEquals(vote.optionId, result.first().optionId) + assertEquals(vote.createdAt, result.first().createdAt) + assertEquals(vote.updatedAt, result.first().updatedAt) + assertEquals(vote.userId, result.first().userId) + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/attachment/internal/AttachmentMapperTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/attachment/internal/AttachmentMapperTest.kt new file mode 100644 index 00000000000..b93b5752119 --- /dev/null +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/attachment/internal/AttachmentMapperTest.kt @@ -0,0 +1,282 @@ +/* + * 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.internal.offline.repository.domain.message.attachment.internal + +import io.getstream.chat.android.client.internal.offline.randomAttachmentEntity +import io.getstream.chat.android.client.internal.offline.randomReplyAttachmentEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.UploadStateEntity.Companion.UPLOAD_STATE_FAILED +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.UploadStateEntity.Companion.UPLOAD_STATE_IN_PROGRESS +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.UploadStateEntity.Companion.UPLOAD_STATE_SUCCESS +import io.getstream.chat.android.models.Attachment +import io.getstream.chat.android.positiveRandomInt +import io.getstream.chat.android.positiveRandomLong +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomString +import io.getstream.result.Error +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import java.io.File + +internal class AttachmentMapperTest { + + @Test + fun `Should map Attachment to AttachmentEntity correctly`() { + val messageId = randomString() + val index = randomInt() + val attachment = randomAttachment(uploadState = Attachment.UploadState.Success) + val generatedId = AttachmentEntity.generateId(messageId, index) + + val expectedEntity = AttachmentEntity( + id = generatedId, + messageId = messageId, + authorName = attachment.authorName, + titleLink = attachment.titleLink, + authorLink = attachment.authorLink, + thumbUrl = attachment.thumbUrl, + imageUrl = attachment.imageUrl, + assetUrl = attachment.assetUrl, + ogUrl = attachment.ogUrl, + mimeType = attachment.mimeType, + fileSize = attachment.fileSize, + title = attachment.title, + text = attachment.text, + type = attachment.type, + image = attachment.image, + name = attachment.name, + fallback = attachment.fallback, + uploadFilePath = attachment.upload?.absolutePath, + uploadState = UploadStateEntity(UPLOAD_STATE_SUCCESS, null), + originalHeight = attachment.originalHeight, + originalWidth = attachment.originalWidth, + extraData = attachment.extraData + (AttachmentEntity.EXTRA_DATA_ID_KEY to generatedId), + ) + + val result = attachment.toEntity(messageId, index) + + assertEquals(expectedEntity, result) + } + + @Test + fun `Should keep attachment id from extra data when mapping to AttachmentEntity`() { + val existingId = randomString() + val attachment = randomAttachment( + extraData = mapOf(AttachmentEntity.EXTRA_DATA_ID_KEY to existingId), + ) + + val result = attachment.toEntity(randomString(), randomInt()) + + assertEquals(existingId, result.id) + assertEquals(attachment.extraData, result.extraData) + } + + @Test + fun `Should map Attachment to ReplyAttachmentEntity correctly`() { + val messageId = randomString() + val index = randomInt() + val attachment = randomAttachment(uploadState = Attachment.UploadState.Success) + val generatedId = AttachmentEntity.generateId(messageId, index) + + val expectedEntity = ReplyAttachmentEntity( + id = generatedId, + messageId = messageId, + authorName = attachment.authorName, + titleLink = attachment.titleLink, + authorLink = attachment.authorLink, + thumbUrl = attachment.thumbUrl, + imageUrl = attachment.imageUrl, + assetUrl = attachment.assetUrl, + ogUrl = attachment.ogUrl, + mimeType = attachment.mimeType, + fileSize = attachment.fileSize, + title = attachment.title, + text = attachment.text, + type = attachment.type, + image = attachment.image, + name = attachment.name, + fallback = attachment.fallback, + uploadFilePath = attachment.upload?.absolutePath, + uploadState = UploadStateEntity(UPLOAD_STATE_SUCCESS, null), + originalHeight = attachment.originalHeight, + originalWidth = attachment.originalWidth, + extraData = attachment.extraData + (AttachmentEntity.EXTRA_DATA_ID_KEY to generatedId), + ) + + val result = attachment.toReplyEntity(messageId, index) + + assertEquals(expectedEntity, result) + } + + @Test + fun `Should map AttachmentEntity to Attachment correctly`() { + val entity = randomAttachmentEntity( + uploadFilePath = randomString(), + uploadState = UploadStateEntity(UPLOAD_STATE_SUCCESS, null), + ) + + val expectedAttachment = Attachment( + authorName = entity.authorName, + titleLink = entity.titleLink, + authorLink = entity.authorLink, + thumbUrl = entity.thumbUrl, + imageUrl = entity.imageUrl, + assetUrl = entity.assetUrl, + ogUrl = entity.ogUrl, + mimeType = entity.mimeType, + fileSize = entity.fileSize, + title = entity.title, + text = entity.text, + type = entity.type, + image = entity.image, + name = entity.name, + fallback = entity.fallback, + upload = entity.uploadFilePath?.let(::File), + uploadState = Attachment.UploadState.Success, + originalHeight = entity.originalHeight, + originalWidth = entity.originalWidth, + extraData = entity.extraData, + ) + + val result = entity.toModel() + + assertEquals(expectedAttachment, result) + } + + @Test + fun `Should map ReplyAttachmentEntity to Attachment correctly`() { + val entity = randomReplyAttachmentEntity( + uploadFilePath = randomString(), + uploadState = UploadStateEntity(UPLOAD_STATE_SUCCESS, null), + ) + + val expectedAttachment = Attachment( + authorName = entity.authorName, + titleLink = entity.titleLink, + authorLink = entity.authorLink, + thumbUrl = entity.thumbUrl, + imageUrl = entity.imageUrl, + assetUrl = entity.assetUrl, + ogUrl = entity.ogUrl, + mimeType = entity.mimeType, + fileSize = entity.fileSize, + title = entity.title, + text = entity.text, + type = entity.type, + image = entity.image, + name = entity.name, + fallback = entity.fallback, + upload = entity.uploadFilePath?.let(::File), + uploadState = Attachment.UploadState.Success, + originalHeight = entity.originalHeight, + originalWidth = entity.originalWidth, + extraData = entity.extraData, + ) + + val result = entity.toModel() + + assertEquals(expectedAttachment, result) + } + + @Test + fun `Should map Idle upload state to in progress entity state`() { + val attachment = randomAttachment(uploadState = Attachment.UploadState.Idle) + + val result = attachment.toEntity(randomString(), randomInt()) + + assertEquals(UploadStateEntity(UPLOAD_STATE_IN_PROGRESS, null), result.uploadState) + } + + @Test + fun `Should map InProgress upload state to in progress entity state`() { + val attachment = randomAttachment( + uploadState = Attachment.UploadState.InProgress( + bytesUploaded = positiveRandomLong(), + totalBytes = positiveRandomLong(), + ), + ) + + val result = attachment.toEntity(randomString(), randomInt()) + + assertEquals(UploadStateEntity(UPLOAD_STATE_IN_PROGRESS, null), result.uploadState) + } + + @Test + fun `Should map Failed upload state to failed entity state`() { + val errorMessage = randomString() + val attachment = randomAttachment( + uploadState = Attachment.UploadState.Failed(Error.GenericError(message = errorMessage)), + ) + + val result = attachment.toEntity(randomString(), randomInt()) + + assertEquals(UploadStateEntity(UPLOAD_STATE_FAILED, errorMessage), result.uploadState) + } + + @Test + fun `Should map null upload state to null entity state`() { + val attachment = randomAttachment(uploadState = null) + + val result = attachment.toEntity(randomString(), randomInt()) + + assertEquals(null, result.uploadState) + } + + @Test + fun `Should map in progress entity state to InProgress upload state`() { + val entity = randomAttachmentEntity( + uploadFilePath = null, + uploadState = UploadStateEntity(UPLOAD_STATE_IN_PROGRESS, null), + ) + + val result = entity.toModel() + + assertEquals(Attachment.UploadState.InProgress(bytesUploaded = 0L, totalBytes = 0L), result.uploadState) + } + + @Test + fun `Should map failed entity state to Failed upload state`() { + val errorMessage = randomString() + val entity = randomAttachmentEntity( + uploadState = UploadStateEntity(UPLOAD_STATE_FAILED, errorMessage), + ) + + val result = entity.toModel() + + assertEquals(Attachment.UploadState.Failed(Error.GenericError(message = errorMessage)), result.uploadState) + } + + @Test + fun `Should map failed entity state without message to Failed upload state with empty message`() { + val entity = randomAttachmentEntity( + uploadState = UploadStateEntity(UPLOAD_STATE_FAILED, null), + ) + + val result = entity.toModel() + + assertEquals(Attachment.UploadState.Failed(Error.GenericError(message = "")), result.uploadState) + } + + @Test + fun `Should throw when mapping entity with unknown upload state code`() { + val entity = randomAttachmentEntity( + uploadState = UploadStateEntity(UPLOAD_STATE_FAILED + positiveRandomInt(), null), + ) + + assertThrows { entity.toModel() } + } +} diff --git a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/internal/MessageMapperTest.kt b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/internal/MessageMapperTest.kt index 568dc3409a2..8a2d24af238 100644 --- a/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/internal/MessageMapperTest.kt +++ b/stream-chat-android-client/src/test/java/io/getstream/chat/android/client/internal/offline/repository/domain/message/internal/MessageMapperTest.kt @@ -18,14 +18,27 @@ package io.getstream.chat.android.client.internal.offline.repository.domain.mess import io.getstream.chat.android.client.internal.offline.randomMessageEntity import io.getstream.chat.android.client.internal.offline.randomReactionGroupEntity +import io.getstream.chat.android.client.internal.offline.randomReminderInfoEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.toEntity +import io.getstream.chat.android.client.internal.offline.repository.domain.message.attachment.internal.toReplyEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.channelinfo.internal.toEntity import io.getstream.chat.android.client.internal.offline.repository.domain.message.channelinfo.internal.toModel import io.getstream.chat.android.client.internal.offline.repository.domain.reaction.internal.toEntity +import io.getstream.chat.android.models.DraftMessage import io.getstream.chat.android.models.Location import io.getstream.chat.android.models.Message +import io.getstream.chat.android.models.MessageReminderInfo +import io.getstream.chat.android.models.SyncStatus import io.getstream.chat.android.models.User +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomCID +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomDraftMessage +import io.getstream.chat.android.randomInt import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomMessageReminderInfo +import io.getstream.chat.android.randomPoll import io.getstream.chat.android.randomString import io.getstream.chat.android.randomUser import kotlinx.coroutines.test.runTest @@ -202,4 +215,289 @@ internal class MessageMapperTest { assertEquals(expectedMessageEntity, resultMessageEntity) } + + @Test + fun `Should map Message to MessageEntity with replyMessageId when replyTo is null`() = runTest { + val replyMessageId = randomString() + val message = randomMessage( + replyTo = null, + replyMessageId = replyMessageId, + ) + + val result = message.toEntity() + + assertEquals(replyMessageId, result.messageInnerEntity.replyToId) + } + + @Test + fun `Should map MessageEntity to Message with reply and poll`() = runTest { + val user = randomUser() + val reply = randomMessage() + val poll = randomPoll() + val messageEntity = randomMessageEntity( + replyToId = reply.id, + pollId = poll.id, + ) + + val result = messageEntity.toModel( + getUser = { user }, + getReply = { messageId -> reply.takeIf { messageId == reply.id } }, + getPoll = { pollId -> poll.takeIf { pollId == poll.id } }, + ) + + assertEquals(reply, result.replyTo) + assertEquals(poll, result.poll) + } + + @Test + fun `Should map Message to ReplyMessageEntity correctly`() = runTest { + val message = randomMessage( + attachments = listOf(randomAttachment()), + mentionedUsers = listOf(randomUser()), + ).copy( + // Diverge from the fixture default (mentioned user ids) so a mapping swap between + // remoteMentionedUserIds and mentionedUsersId fails the test. + mentionedUsersIds = listOf(randomString()), + ) + + val expectedReplyMessageEntity = ReplyMessageEntity( + replyMessageInnerEntity = ReplyMessageInnerEntity( + id = message.id, + cid = message.cid, + userId = message.user.id, + text = message.text, + html = message.html, + syncStatus = message.syncStatus, + type = message.type, + replyCount = message.replyCount, + deletedReplyCount = message.deletedReplyCount, + createdAt = message.createdAt, + createdLocallyAt = message.createdLocallyAt, + updatedAt = message.updatedAt, + updatedLocallyAt = message.updatedLocallyAt, + deletedAt = message.deletedAt, + parentId = message.parentId, + command = message.command, + shadowed = message.shadowed, + i18n = message.i18n, + remoteMentionedUserIds = message.mentionedUsers.map(User::id), + mentionedUsersId = message.mentionedUsersIds, + mentionedHere = message.mentionedHere, + mentionedChannel = message.mentionedChannel, + mentionedGroups = message.mentionedGroups, + mentionedRoles = message.mentionedRoles, + threadParticipantsIds = message.threadParticipants.map(User::id), + showInChannel = message.showInChannel, + silent = message.silent, + pinned = message.pinned, + pinnedAt = message.pinnedAt, + pinExpires = message.pinExpires, + pinnedByUserId = message.pinnedBy?.id, + moderationDetails = message.moderationDetails?.toEntity(), + pollId = message.poll?.id, + reminder = message.reminder?.toEntity(), + channelRole = message.channelRole, + ), + attachments = message.attachments.mapIndexed { index, attachment -> + attachment.toReplyEntity( + message.id, + index, + ) + }, + ) + + val result = message.toReplyEntity() + + assertEquals(expectedReplyMessageEntity, result) + } + + @Test + fun `Should map ReplyMessageEntity to Message correctly`() = runTest { + val author = randomUser() + val mentionedUser = randomUser() + val threadParticipant = randomUser() + val pinnedByUser = randomUser() + val usersById = listOf(author, mentionedUser, threadParticipant, pinnedByUser).associateBy(User::id) + val innerEntity = ReplyMessageInnerEntity( + id = randomString(), + cid = randomCID(), + userId = author.id, + text = randomString(), + html = randomString(), + type = randomString(), + syncStatus = SyncStatus.COMPLETED, + replyCount = randomInt(), + deletedReplyCount = randomInt(), + createdAt = randomDate(), + createdLocallyAt = randomDate(), + updatedAt = randomDate(), + updatedLocallyAt = randomDate(), + deletedAt = randomDate(), + remoteMentionedUserIds = listOf(mentionedUser.id), + mentionedUsersId = listOf(randomString()), + mentionedHere = randomBoolean(), + mentionedChannel = randomBoolean(), + mentionedRoles = listOf(randomString()), + parentId = randomString(), + command = randomString(), + shadowed = randomBoolean(), + i18n = mapOf(randomString() to randomString()), + showInChannel = randomBoolean(), + silent = randomBoolean(), + pinned = randomBoolean(), + pinnedAt = randomDate(), + pinExpires = randomDate(), + pinnedByUserId = pinnedByUser.id, + threadParticipantsIds = listOf(threadParticipant.id), + messageTextUpdatedAt = randomDate(), + pollId = null, + restrictedVisibility = listOf(randomString()), + reminder = randomReminderInfoEntity(), + channelRole = randomString(), + ) + val replyMessageEntity = ReplyMessageEntity( + replyMessageInnerEntity = innerEntity, + attachments = emptyList(), + ) + + val expectedMessage = Message( + id = innerEntity.id, + cid = innerEntity.cid, + user = author, + text = innerEntity.text, + html = innerEntity.html, + attachments = emptyList(), + type = innerEntity.type, + replyCount = innerEntity.replyCount, + deletedReplyCount = innerEntity.deletedReplyCount, + createdAt = innerEntity.createdAt, + createdLocallyAt = innerEntity.createdLocallyAt, + updatedAt = innerEntity.updatedAt, + updatedLocallyAt = innerEntity.updatedLocallyAt, + deletedAt = innerEntity.deletedAt, + parentId = innerEntity.parentId, + command = innerEntity.command, + syncStatus = innerEntity.syncStatus, + shadowed = innerEntity.shadowed, + i18n = innerEntity.i18n, + latestReactions = mutableListOf(), + ownReactions = mutableListOf(), + mentionedUsers = listOf(mentionedUser), + mentionedUsersIds = innerEntity.mentionedUsersId, + mentionedHere = innerEntity.mentionedHere, + mentionedChannel = innerEntity.mentionedChannel, + mentionedGroups = innerEntity.mentionedGroups, + mentionedRoles = innerEntity.mentionedRoles, + replyTo = null, + replyMessageId = null, + threadParticipants = listOf(threadParticipant), + showInChannel = innerEntity.showInChannel, + silent = innerEntity.silent, + pinned = innerEntity.pinned, + pinnedAt = innerEntity.pinnedAt, + pinExpires = innerEntity.pinExpires, + pinnedBy = pinnedByUser, + moderationDetails = null, + messageTextUpdatedAt = innerEntity.messageTextUpdatedAt, + poll = null, + restrictedVisibility = innerEntity.restrictedVisibility, + channelInfo = null, + reminder = innerEntity.reminder?.toModel(), + channelRole = innerEntity.channelRole, + ) + + val result = replyMessageEntity.toModel( + getUser = usersById::getValue, + getPoll = { null }, + ) + + assertEquals(expectedMessage, result) + } + + @Test + fun `Should map DraftMessage to DraftMessageEntity correctly`() = runTest { + val draftMessage = randomDraftMessage() + + val expectedDraftMessageEntity = DraftMessageEntity( + id = draftMessage.id, + cid = draftMessage.cid, + parentId = draftMessage.parentId, + mentionedUsersIds = draftMessage.mentionedUsersIds, + silent = draftMessage.silent, + showInChannel = draftMessage.showInChannel, + replyMessageId = draftMessage.replyMessage?.id, + text = draftMessage.text, + command = draftMessage.command, + args = draftMessage.args, + extraData = draftMessage.extraData, + ) + + val result = draftMessage.toEntity() + + assertEquals(expectedDraftMessageEntity, result) + } + + @Test + fun `Should map DraftMessageEntity to DraftMessage correctly`() = runTest { + val replyMessage = randomMessage() + val draftMessageEntity = DraftMessageEntity( + id = randomString(), + cid = randomCID(), + text = randomString(), + parentId = randomString(), + mentionedUsersIds = listOf(randomString()), + silent = randomBoolean(), + showInChannel = randomBoolean(), + replyMessageId = replyMessage.id, + command = randomString(), + args = randomString(), + extraData = mapOf(randomString() to randomString()), + ) + + val expectedDraftMessage = DraftMessage( + id = draftMessageEntity.id, + cid = draftMessageEntity.cid, + parentId = draftMessageEntity.parentId, + mentionedUsersIds = draftMessageEntity.mentionedUsersIds, + silent = draftMessageEntity.silent, + showInChannel = draftMessageEntity.showInChannel, + replyMessage = replyMessage, + text = draftMessageEntity.text, + command = draftMessageEntity.command, + args = draftMessageEntity.args, + extraData = draftMessageEntity.extraData, + ) + + val result = draftMessageEntity.toModel { messageId -> + replyMessage.takeIf { messageId == replyMessage.id } + } + + assertEquals(expectedDraftMessage, result) + } + + @Test + fun `Should map MessageReminderInfo to ReminderInfoEntity correctly`() = runTest { + val reminderInfo = randomMessageReminderInfo() + + val expectedReminderInfoEntity = ReminderInfoEntity( + remindAt = reminderInfo.remindAt, + createdAt = reminderInfo.createdAt, + updatedAt = reminderInfo.updatedAt, + ) + + assertEquals(expectedReminderInfoEntity, reminderInfo.toEntity()) + } + + @Test + fun `Should map ReminderInfoEntity to MessageReminderInfo correctly`() = runTest { + val reminderInfoEntity = randomReminderInfoEntity() + + val expectedReminderInfo = MessageReminderInfo( + remindAt = reminderInfoEntity.remindAt, + createdAt = reminderInfoEntity.createdAt, + updatedAt = reminderInfoEntity.updatedAt, + ) + + assertEquals(expectedReminderInfo, reminderInfoEntity.toModel()) + } } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/PaparazziComposeTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/PaparazziComposeTest.kt index d0405696a1b..91b2fdd6436 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/PaparazziComposeTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/PaparazziComposeTest.kt @@ -42,11 +42,35 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelStore import androidx.lifecycle.ViewModelStoreOwner import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner +import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.resources.Density import io.getstream.chat.android.client.test.MockedChatClientTest import io.getstream.chat.android.compose.ui.theme.ChatTheme import org.junit.Rule +/** + * [DeviceConfig.PIXEL_2] geometry (411x731dp) at hdpi. The dp layout is identical to the + * Pixel 2, but rendering at 1.5x keeps the golden files small, which speeds up comparisons. + */ +internal val PIXEL_2_HDPI = DeviceConfig.PIXEL_2.atHdpi() + +/** + * [DeviceConfig.PIXEL_4A] geometry (392x850dp) at hdpi, for snapshots that need a taller screen. + */ +internal val PIXEL_4A_HDPI = DeviceConfig.PIXEL_4A.atHdpi() + +/** + * A copy of this device with the same dp geometry rendered at 1.5x instead of the native density. + */ +private fun DeviceConfig.atHdpi(): DeviceConfig = copy( + screenWidth = screenWidth * Density.HIGH.dpiValue / density.dpiValue, + screenHeight = screenHeight * Density.HIGH.dpiValue / density.dpiValue, + xdpi = Density.HIGH.dpiValue, + ydpi = Density.HIGH.dpiValue, + density = Density.HIGH, +) + internal interface PaparazziComposeTest : MockedChatClientTest { @get:Rule @@ -83,7 +107,7 @@ internal interface PaparazziComposeTest : MockedChatClientTest { ChatTheme(isInDarkMode = true) { Box( modifier = Modifier - .weight(.5f) + .weight(weight = .5f, fill = false) .background(ChatTheme.colors.backgroundCoreApp), contentAlignment = contentAlignment, ) { @@ -93,7 +117,7 @@ internal interface PaparazziComposeTest : MockedChatClientTest { ChatTheme(isInDarkMode = false) { Box( modifier = Modifier - .weight(.5f) + .weight(weight = .5f, fill = false) .background(ChatTheme.colors.backgroundCoreApp), contentAlignment = contentAlignment, ) { @@ -115,7 +139,7 @@ internal interface PaparazziComposeTest : MockedChatClientTest { ChatTheme(isInDarkMode = true) { Box( modifier = Modifier - .weight(.5f) + .weight(weight = .5f, fill = false) .background(ChatTheme.colors.backgroundCoreApp), contentAlignment = contentAlignment, ) { @@ -125,7 +149,7 @@ internal interface PaparazziComposeTest : MockedChatClientTest { ChatTheme(isInDarkMode = false) { Box( modifier = Modifier - .weight(.5f) + .weight(weight = .5f, fill = false) .background(ChatTheme.colors.backgroundCoreApp), contentAlignment = contentAlignment, ) { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/content/AttachmentsContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/content/AttachmentsContentTest.kt index 1c63e3d5002..a1db576f1cb 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/content/AttachmentsContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/content/AttachmentsContentTest.kt @@ -17,9 +17,9 @@ package io.getstream.chat.android.compose.ui.attachments.content import androidx.compose.foundation.layout.Column -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.components.messages.GiphyMessageContent import org.junit.Rule @@ -29,7 +29,7 @@ internal class AttachmentsContentTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) @@ -87,7 +87,7 @@ internal class AttachmentsContentTest : PaparazziComposeTest { @Test fun `giphy message content`() { - snapshotWithDarkModeRow { + snapshotWithDarkMode { GiphyMessageContent() } } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewOptionsMenuTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewOptionsMenuTest.kt index b31313f4cef..a60f240170a 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewOptionsMenuTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewOptionsMenuTest.kt @@ -17,8 +17,9 @@ package io.getstream.chat.android.compose.ui.attachments.preview import androidx.compose.runtime.Composable -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.theme.MediaGalleryOptionsConfig import io.getstream.chat.android.models.ConnectionState @@ -30,7 +31,10 @@ import org.junit.Test internal class MediaGalleryPreviewOptionsMenuTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `media gallery options menu for own user`() = snapshot { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewScreenTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewScreenTest.kt index a0af970f1e5..cec452bd2ce 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewScreenTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/MediaGalleryPreviewScreenTest.kt @@ -16,8 +16,10 @@ package io.getstream.chat.android.compose.ui.attachments.preview -import app.cash.paparazzi.DeviceConfig +import androidx.compose.runtime.Composable import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.models.ConnectionState import io.getstream.chat.android.previewdata.PreviewMessageData @@ -27,7 +29,10 @@ import org.junit.Test internal class MediaGalleryPreviewScreenTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `media gallery header offline`() = snapshotWithDarkMode { @@ -110,84 +115,71 @@ internal class MediaGalleryPreviewScreenTest : PaparazziComposeTest { @Test fun `media gallery screen offline`() = snapshot { - val message = PreviewMessageData.messageWithUserAndAttachment - MediaGalleryPreviewScreen( - message = message, - connectionState = ConnectionState.Offline, - currentUser = message.user, - selectedAttachmentUrl = null, - promptedAttachment = null, - isSharingInProgress = false, - isShowingOptions = false, - isShowingGallery = false, - onOptionClick = { _, _ -> }, - onRequestShareAttachment = {}, - ) + MediaGalleryScreen(connectionState = ConnectionState.Offline) + } + + @Test + fun `media gallery screen offline in dark mode`() = snapshot(isInDarkMode = true) { + MediaGalleryScreen(connectionState = ConnectionState.Offline) } @Test fun `media gallery screen connected`() = snapshot { - val message = PreviewMessageData.messageWithUserAndAttachment - MediaGalleryPreviewScreen( - message = message, - connectionState = ConnectionState.Connected, - currentUser = message.user, - selectedAttachmentUrl = null, - promptedAttachment = null, - isSharingInProgress = false, - isShowingOptions = false, - isShowingGallery = false, - onOptionClick = { _, _ -> }, - onRequestShareAttachment = {}, - ) + MediaGalleryScreen() + } + + @Test + fun `media gallery screen connected in dark mode`() = snapshot(isInDarkMode = true) { + MediaGalleryScreen() } @Test fun `media gallery screen with options menu`() = snapshot { - val message = PreviewMessageData.messageWithUserAndAttachment - MediaGalleryPreviewScreen( - message = message, - connectionState = ConnectionState.Connected, - currentUser = message.user, - selectedAttachmentUrl = null, - promptedAttachment = null, - isSharingInProgress = false, - isShowingOptions = true, - isShowingGallery = false, - onOptionClick = { _, _ -> }, - onRequestShareAttachment = {}, - ) + MediaGalleryScreen(isShowingOptions = true) + } + + @Test + fun `media gallery screen with options menu in dark mode`() = snapshot(isInDarkMode = true) { + MediaGalleryScreen(isShowingOptions = true) } @Test fun `media gallery screen with share large file prompt`() = snapshot { - val message = PreviewMessageData.messageWithUserAndAttachment - MediaGalleryPreviewScreen( - message = message, - connectionState = ConnectionState.Connected, - currentUser = message.user, - selectedAttachmentUrl = null, - promptedAttachment = message.attachments[0], - isSharingInProgress = false, - isShowingOptions = false, - isShowingGallery = false, - onOptionClick = { _, _ -> }, - onRequestShareAttachment = {}, - ) + MediaGalleryScreen(promptShareAttachment = true) + } + + @Test + fun `media gallery screen with share large file prompt in dark mode`() = snapshot(isInDarkMode = true) { + MediaGalleryScreen(promptShareAttachment = true) } @Test fun `media gallery screen with gallery bottom sheet`() = snapshot { + MediaGalleryScreen(isShowingGallery = true) + } + + @Test + fun `media gallery screen with gallery bottom sheet in dark mode`() = snapshot(isInDarkMode = true) { + MediaGalleryScreen(isShowingGallery = true) + } + + @Composable + private fun MediaGalleryScreen( + connectionState: ConnectionState = ConnectionState.Connected, + promptShareAttachment: Boolean = false, + isShowingOptions: Boolean = false, + isShowingGallery: Boolean = false, + ) { val message = PreviewMessageData.messageWithUserAndAttachment MediaGalleryPreviewScreen( message = message, - connectionState = ConnectionState.Connected, + connectionState = connectionState, currentUser = message.user, selectedAttachmentUrl = null, - promptedAttachment = null, + promptedAttachment = message.attachments.first().takeIf { promptShareAttachment }, isSharingInProgress = false, - isShowingOptions = false, - isShowingGallery = true, + isShowingOptions = isShowingOptions, + isShowingGallery = isShowingGallery, onOptionClick = { _, _ -> }, onRequestShareAttachment = {}, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/internal/MediaGalleryPhotosMenuTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/internal/MediaGalleryPhotosMenuTest.kt index d212aa00fcf..f7976632818 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/internal/MediaGalleryPhotosMenuTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/attachments/preview/internal/MediaGalleryPhotosMenuTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.attachments.preview.internal -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class MediaGalleryPhotosMenuTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `photos menu`() = snapshot { MediaGalleryPhotosMenuSample() } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelFilesAttachmentsContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelFilesAttachmentsContentTest.kt index 1f54e883d4c..ca3f3bd14d9 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelFilesAttachmentsContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelFilesAttachmentsContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelFilesAttachmentsContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsContentTest.kt index d9dbefbcc7c..ba1d625e185 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelMediaAttachmentsContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewContentTest.kt index c47e05496e0..f6928f8cec3 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelMediaAttachmentsPreviewContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun content() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewSheetTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewSheetTest.kt index a975b61a3ff..fa885d2f129 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewSheetTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/attachments/ChannelMediaAttachmentsPreviewSheetTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.models.ConnectionState import kotlinx.coroutines.flow.MutableStateFlow @@ -30,7 +31,10 @@ import org.mockito.kotlin.whenever internal class ChannelMediaAttachmentsPreviewSheetTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Before fun prepare() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/AddMembersScreenTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/AddMembersScreenTest.kt index d7f465104cf..689c8563e0e 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/AddMembersScreenTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/AddMembersScreenTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class AddMembersScreenTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoMemberInfoModalSheetTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoMemberInfoModalSheetTest.kt index 5a1e9e9f8f6..d5b1b5d1f26 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoMemberInfoModalSheetTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoMemberInfoModalSheetTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelInfoMemberInfoModalSheetTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `banned member`() = snapshot { ChannelInfoMemberInfoSheet(banned = true) } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoOptionItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoOptionItemTest.kt index d44fbfe116e..b983e33db70 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoOptionItemTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoOptionItemTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelInfoOptionItemTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `direct channel info option items in light mode`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoScreenModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoScreenModelTest.kt index a80e5447fdb..c9e059fb613 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoScreenModelTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/ChannelInfoScreenModelTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.ui.common.feature.channel.info.ChannelInfoViewEvent import org.junit.Rule @@ -28,7 +28,7 @@ internal class ChannelInfoScreenModelTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/DirectChannelInfoContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/DirectChannelInfoContentTest.kt index 71b81ab2be1..a3c72d3cd00 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/DirectChannelInfoContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/DirectChannelInfoContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class DirectChannelInfoContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelEditScreenTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelEditScreenTest.kt index 7a417e32e36..2033fccac77 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelEditScreenTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelEditScreenTest.kt @@ -17,8 +17,9 @@ package io.getstream.chat.android.compose.ui.channel.info import androidx.compose.ui.graphics.Color -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -26,7 +27,10 @@ import org.junit.Test internal class GroupChannelEditScreenTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun placeholder() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelInfoContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelInfoContentTest.kt index 4e7b5fe98a7..13db2adef54 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelInfoContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channel/info/GroupChannelInfoContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channel.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_4A_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class GroupChannelInfoContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_4A) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_4A_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelItemTest.kt index e8888260e62..8a812603868 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelItemTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelItemTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channels -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.channels.list.ChannelItemDraftMessage import io.getstream.chat.android.compose.ui.channels.list.ChannelItemLastMessageDeliveredStatus @@ -39,7 +40,10 @@ import org.junit.Test internal class ChannelItemTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `no messages`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListHeaderTest.kt index f7fe66bcaf0..ae7838faf08 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListHeaderTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListHeaderTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channels -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.channels.header.ChannelListHeaderConnectedNoUser import io.getstream.chat.android.compose.ui.channels.header.ChannelListHeaderConnectedWithUser @@ -31,7 +32,10 @@ import org.junit.Test internal class ChannelListHeaderTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `connected, no user`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListTest.kt index a5a8376ba85..043d51c6f58 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelListTest.kt @@ -18,11 +18,12 @@ package io.getstream.chat.android.compose.ui.channels import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams import io.getstream.chat.android.compose.state.channels.list.ChannelsState import io.getstream.chat.android.compose.state.channels.list.ItemState import io.getstream.chat.android.compose.state.channels.list.SearchQuery +import io.getstream.chat.android.compose.ui.PIXEL_4A_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.channels.list.ChannelList import io.getstream.chat.android.models.Member @@ -35,7 +36,10 @@ import org.junit.Test internal class ChannelListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_4A) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_4A_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `empty channels`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelsTest.kt index 658698645a4..419ad5c476a 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelsTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/ChannelsTest.kt @@ -18,11 +18,13 @@ package io.getstream.chat.android.compose.ui.channels import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams import io.getstream.chat.android.compose.state.channels.list.ChannelsState import io.getstream.chat.android.compose.state.channels.list.ItemState +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.channels.list.Channels import io.getstream.chat.android.compose.ui.channels.list.WrapperItemContent @@ -34,33 +36,48 @@ import org.junit.Test internal class ChannelsTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `loaded channels`() { snapshot { - Channels( - modifier = Modifier.fillMaxSize(), - channelsState = ChannelsState( - isLoading = false, - channelItems = listOf( - ItemState.ChannelItemState(channel = PreviewChannelData.channelWithImage), - ItemState.ChannelItemState(channel = PreviewChannelData.channelWithOneUser), - ItemState.ChannelItemState(channel = PreviewChannelData.channelWithOnlineUser), - ), - ), - lazyListState = rememberLazyListState(), - itemContent = { itemState -> - WrapperItemContent( - itemState = itemState, - currentUser = PreviewUserData.user1, - onChannelClick = {}, - onChannelLongClick = {}, - onSearchResultClick = {}, - ) - }, - onLastItemReached = {}, - ) + LoadedChannels() + } + } + + @Test + fun `loaded channels in dark mode`() { + snapshot(isInDarkMode = true) { + LoadedChannels() } } + + @Composable + private fun LoadedChannels() { + Channels( + modifier = Modifier.fillMaxSize(), + channelsState = ChannelsState( + isLoading = false, + channelItems = listOf( + ItemState.ChannelItemState(channel = PreviewChannelData.channelWithImage), + ItemState.ChannelItemState(channel = PreviewChannelData.channelWithOneUser), + ItemState.ChannelItemState(channel = PreviewChannelData.channelWithOnlineUser), + ), + ), + lazyListState = rememberLazyListState(), + itemContent = { itemState -> + WrapperItemContent( + itemState = itemState, + currentUser = PreviewUserData.user1, + onChannelClick = {}, + onChannelLongClick = {}, + onSearchResultClick = {}, + ) + }, + onLastItemReached = {}, + ) + } } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/SelectedChannelMenuTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/SelectedChannelMenuTest.kt index 86225b8c947..d7ce2f46669 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/SelectedChannelMenuTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/SelectedChannelMenuTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channels -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.channels.info.SelectedChannelMenuBottomSheetDialog import io.getstream.chat.android.compose.ui.channels.info.SelectedChannelMenuCenteredDialog @@ -28,7 +29,10 @@ import org.junit.Test internal class SelectedChannelMenuTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `selected channel centered dialog`() = snapshot { SelectedChannelMenuCenteredDialog() } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/info/ChannelActionsSheetTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/info/ChannelActionsSheetTest.kt index 833b3803123..bed32cf6975 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/info/ChannelActionsSheetTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/info/ChannelActionsSheetTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channels.info -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelActionsSheetTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `channel actions sheet`() = snapshot { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/ChannelListBannerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/ChannelListBannerTest.kt index 91df9d6ac0f..a4344ab7fef 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/ChannelListBannerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/ChannelListBannerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.channels.list -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.theme.ChannelListBannerParams import io.getstream.chat.android.compose.ui.theme.ChatTheme @@ -27,7 +28,10 @@ import org.junit.Test internal class ChannelListBannerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `error state`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/DefaultChannelSwipeActionsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/DefaultChannelSwipeActionsTest.kt new file mode 100644 index 00000000000..82f1c38f20b --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/DefaultChannelSwipeActionsTest.kt @@ -0,0 +1,79 @@ +/* + * 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.compose.ui.channels.list + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.state.channels.list.ItemState +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI +import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import io.getstream.chat.android.models.ChannelCapabilities +import io.getstream.chat.android.previewdata.PreviewChannelData +import org.junit.Rule +import org.junit.Test + +internal class DefaultChannelSwipeActionsTest : PaparazziComposeTest { + + @get:Rule + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) + + @Test + fun `swipe actions for unmuted channel`() { + snapshotWithDarkMode { + SwipeActionsRow( + channelItem = ItemState.ChannelItemState(channel = ChannelWithMuteCapability), + ) + } + } + + @Test + fun `swipe actions for muted channel`() { + snapshotWithDarkMode { + SwipeActionsRow( + channelItem = ItemState.ChannelItemState( + channel = ChannelWithMuteCapability, + isMuted = true, + ), + ) + } + } + + @Composable + private fun SwipeActionsRow(channelItem: ItemState.ChannelItemState) { + CompositionLocalProvider( + LocalSwipeActionHandler provides {}, + LocalChannelMoreClickHandler provides {}, + ) { + Row(modifier = Modifier.height(72.dp)) { + DefaultChannelSwipeActions(channelItem = channelItem) + } + } + } +} + +private val ChannelWithMuteCapability = PreviewChannelData.channelWithImage.copy( + ownCapabilities = setOf(ChannelCapabilities.MUTE_CHANNEL), +) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeActionItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeActionItemTest.kt new file mode 100644 index 00000000000..0738492a71f --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeActionItemTest.kt @@ -0,0 +1,65 @@ +/* + * 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.compose.ui.channels.list + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.height +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.R +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI +import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import org.junit.Rule +import org.junit.Test + +internal class SwipeActionItemTest : PaparazziComposeTest { + + @get:Rule + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) + + @Test + fun `swipe action item styles`() { + snapshotWithDarkMode { + Row(modifier = Modifier.height(72.dp)) { + SwipeActionItem( + icon = painterResource(R.drawable.stream_design_ic_more), + label = "More", + onClick = {}, + style = SwipeActionStyle.Secondary, + ) + SwipeActionItem( + icon = painterResource(R.drawable.stream_design_ic_mute), + label = "Mute", + onClick = {}, + style = SwipeActionStyle.Primary, + ) + SwipeActionItem( + icon = painterResource(R.drawable.stream_design_ic_delete), + label = "Delete", + onClick = {}, + style = SwipeActionStyle.Destructive, + ) + } + } + } +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeableChannelItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeableChannelItemTest.kt new file mode 100644 index 00000000000..a45ab96a0c3 --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/channels/list/SwipeableChannelItemTest.kt @@ -0,0 +1,69 @@ +/* + * 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.compose.ui.channels.list + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.R +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI +import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import io.getstream.chat.android.compose.ui.theme.ChatTheme +import io.getstream.chat.android.previewdata.PreviewChannelData +import org.junit.Rule +import org.junit.Test + +internal class SwipeableChannelItemTest : PaparazziComposeTest { + + @get:Rule + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) + + @Test + fun `closed swipeable channel item hides the actions behind the content`() { + snapshotWithDarkMode { + SwipeableChannelItem( + channelCid = PreviewChannelData.channelWithImage.cid, + backgroundColor = ChatTheme.colors.backgroundCoreApp, + swipeActions = { + SwipeActionItem( + icon = painterResource(R.drawable.stream_design_ic_more), + label = "More", + onClick = {}, + style = SwipeActionStyle.Secondary, + ) + }, + content = { + Text( + text = "Channel item content", + color = ChatTheme.colors.textPrimary, + modifier = Modifier + .fillMaxWidth() + .padding(24.dp), + ) + }, + ) + } + } +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/SearchInputTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/SearchInputTest.kt index 5fd63cf7bac..40952738170 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/SearchInputTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/SearchInputTest.kt @@ -21,8 +21,9 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -30,7 +31,10 @@ import org.junit.Test internal class SearchInputTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `unfocused empty query`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FileTypeIconTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FileTypeIconTest.kt index 6f69e7ed328..a0bb5c46b27 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FileTypeIconTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FileTypeIconTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.attachments.files -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class FileTypeIconTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FilesPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FilesPickerTest.kt index 763cc192e84..39c352c8de2 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FilesPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/files/FilesPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.attachments.files -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class FilesPickerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `single selection`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/images/ImagesPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/images/ImagesPickerTest.kt index f3c0c4f6161..01a8085cb5f 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/images/ImagesPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/attachments/images/ImagesPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.attachments.images -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ImagesPickerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `selection`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/audio/WaveformSliderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/audio/WaveformSliderTest.kt index ee1c5bfb070..e8d35631d53 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/audio/WaveformSliderTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/audio/WaveformSliderTest.kt @@ -23,9 +23,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -34,7 +34,7 @@ internal class WaveformSliderTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/ChannelAvatarTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/ChannelAvatarTest.kt index ae929f9245c..3f9f709c7ca 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/ChannelAvatarTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/ChannelAvatarTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.avatar -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_4A_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,8 @@ internal class ChannelAvatarTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_4A.copy(screenHeight = 4000), + // Extra-tall canvas to fit all avatar variant rows: 4000px at the native 440dpi, converted to hdpi. + deviceConfig = PIXEL_4A_HDPI.copy(screenHeight = 2182), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/UserAvatarTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/UserAvatarTest.kt index e9b8a851b26..ee9b103b0e4 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/UserAvatarTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/avatar/UserAvatarTest.kt @@ -16,10 +16,10 @@ package io.getstream.chat.android.compose.ui.components.avatar -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import com.android.resources.ScreenOrientation +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -28,7 +28,7 @@ internal class UserAvatarTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2.copy(orientation = ScreenOrientation.LANDSCAPE), + deviceConfig = PIXEL_2_HDPI.copy(orientation = ScreenOrientation.LANDSCAPE), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/button/StreamButtonTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/button/StreamButtonTest.kt index a076f72781d..fbac460c455 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/button/StreamButtonTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/button/StreamButtonTest.kt @@ -16,10 +16,10 @@ package io.getstream.chat.android.compose.ui.components.button -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import com.android.resources.ScreenOrientation +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -28,7 +28,7 @@ internal class StreamButtonTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2.copy(orientation = ScreenOrientation.LANDSCAPE), + deviceConfig = PIXEL_2_HDPI.copy(orientation = ScreenOrientation.LANDSCAPE), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsTest.kt new file mode 100644 index 00000000000..8f867fd942f --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/ChannelOptionsTest.kt @@ -0,0 +1,188 @@ +/* + * 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.compose.ui.components.channels + +import androidx.compose.runtime.Composable +import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI +import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import io.getstream.chat.android.compose.ui.theme.ChannelListConfig +import io.getstream.chat.android.compose.ui.theme.ChatTheme +import io.getstream.chat.android.compose.ui.theme.ChatUiConfig +import io.getstream.chat.android.compose.viewmodel.channels.ChannelListViewModel +import io.getstream.chat.android.models.Channel +import io.getstream.chat.android.models.ChannelCapabilities +import io.getstream.chat.android.models.Member +import io.getstream.chat.android.previewdata.PreviewChannelData +import io.getstream.chat.android.previewdata.PreviewUserData +import io.getstream.chat.android.ui.common.state.channels.actions.DeleteConversation +import io.getstream.chat.android.ui.common.state.channels.actions.MuteChannel +import io.getstream.chat.android.ui.common.state.channels.actions.ViewInfo +import kotlinx.coroutines.flow.MutableStateFlow +import org.junit.Rule +import org.junit.Test +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import java.util.Date + +internal class ChannelOptionsTest : PaparazziComposeTest { + + @get:Rule + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) + + @Test + fun `channel options`() { + val channel = PreviewChannelData.channelWithMessages + snapshotWithDarkMode { + ChannelOptions( + actions = listOf( + ViewInfo( + channel = channel, + label = "Channel Info", + onAction = {}, + ), + MuteChannel( + channel = channel, + label = "Mute Channel", + onAction = {}, + ), + DeleteConversation( + channel = channel, + label = "Delete Conversation", + onAction = {}, + ), + ), + onChannelOptionConfirm = {}, + ) + } + } + + @Test + fun `default dm channel actions`() { + val viewModel = mockChannelListViewModel() + snapshotWithDarkMode { + DefaultChannelOptions( + channel = DmChannel, + ownCapabilities = setOf(ChannelCapabilities.DELETE_CHANNEL), + viewModel = viewModel, + ) + } + } + + @Test + fun `default dm channel actions for muted and blocked counterpart`() { + val viewModel = mockChannelListViewModel(isUserMuted = true, isUserBlocked = true) + snapshotWithDarkMode { + DefaultChannelOptions( + channel = DmChannel.copy(membership = PinnedAndArchivedMembership), + ownCapabilities = setOf(ChannelCapabilities.DELETE_CHANNEL), + viewModel = viewModel, + ) + } + } + + @Test + fun `default group channel actions for owner`() { + val viewModel = mockChannelListViewModel() + snapshotWithDarkMode { + DefaultChannelOptions( + channel = PreviewChannelData.channelWithFewMembers, + ownCapabilities = setOf( + ChannelCapabilities.LEAVE_CHANNEL, + ChannelCapabilities.DELETE_CHANNEL, + ), + viewModel = viewModel, + ) + } + } + + @Test + fun `default group channel actions for member`() { + val viewModel = mockChannelListViewModel() + snapshotWithDarkMode { + DefaultChannelOptions( + channel = PreviewChannelData.channelWithFewMembers.copy( + membership = PinnedAndArchivedMembership, + ), + ownCapabilities = setOf(ChannelCapabilities.LEAVE_CHANNEL), + viewModel = viewModel, + ) + } + } + + private fun mockChannelListViewModel( + isUserMuted: Boolean = false, + isUserBlocked: Boolean = false, + ): ChannelListViewModel = mock { + on { user } doReturn MutableStateFlow(PreviewUserData.user1) + on { isUserMuted(any()) } doReturn isUserMuted + on { isUserBlocked(any()) } doReturn isUserBlocked + } + + @Composable + private fun DefaultChannelOptions( + channel: Channel, + ownCapabilities: Set, + viewModel: ChannelListViewModel, + ) { + ChatTheme( + colors = ChatTheme.colors, + config = ChatUiConfig( + channelList = ChannelListConfig( + optionsVisibility = ChannelOptionsVisibility( + isArchiveChannelVisible = true, + isPinChannelVisible = true, + ), + ), + ), + ) { + ChannelOptions( + actions = buildDefaultChannelActions( + selectedChannel = channel, + ownCapabilities = ownCapabilities, + viewModel = viewModel, + onViewInfoAction = {}, + ), + onChannelOptionConfirm = {}, + ) + } + } +} + +/** + * A distinct 1-to-1 channel between the current user (user1) and user2. + */ +private val DmChannel = Channel( + type = "messaging", + id = "!members-dm", + members = listOf( + Member(user = PreviewUserData.user1), + Member(user = PreviewUserData.user2), + ), + memberCount = 2, +) + +private val PinnedAndArchivedMembership = Member( + user = PreviewUserData.user1, + pinnedAt = Date(0), + archivedAt = Date(0), +) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/MessageReadStatusIconTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/MessageReadStatusIconTest.kt index 78e65c1ba07..ab54dc73d9c 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/MessageReadStatusIconTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/channels/MessageReadStatusIconTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.channels -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class MessageReadStatusIconTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CheckboxTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CheckboxTest.kt index 3a8bff91c1d..d22da139f03 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CheckboxTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CheckboxTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.common -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class CheckboxTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CountBadgeTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CountBadgeTest.kt index df0a30044c7..fad2b4e4d8a 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CountBadgeTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/common/CountBadgeTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.common -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class CountBadgeTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/ComposerLinkPreviewTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/ComposerLinkPreviewTest.kt index f5e1628ed16..fbf368d477b 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/ComposerLinkPreviewTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/ComposerLinkPreviewTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.composer -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ComposerLinkPreviewTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `composer link preview`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/InputFieldTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/InputFieldTest.kt index 18e22532533..8e8705f3c95 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/InputFieldTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/composer/InputFieldTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.composer -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class InputFieldTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messageactions/ReactionsMenuTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messageactions/ReactionsMenuTest.kt index 36228ee044a..aec4802dc51 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messageactions/ReactionsMenuTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messageactions/ReactionsMenuTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messageactions -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.models.QueryReactionsResult import io.getstream.chat.android.models.Reaction @@ -33,7 +34,10 @@ import org.mockito.kotlin.whenever internal class ReactionsMenuTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `reactions menu one reaction`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageAnnotationTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageAnnotationTest.kt index c7927c53eb9..3e9244a6a79 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageAnnotationTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageAnnotationTest.kt @@ -18,8 +18,9 @@ package io.getstream.chat.android.compose.ui.components.messages import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +28,10 @@ import org.junit.Test internal class MessageAnnotationTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `message annotations`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageFooterTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageFooterTest.kt index 2783f12c865..2c8597d76bb 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageFooterTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageFooterTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities @@ -35,7 +35,7 @@ internal class MessageFooterTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageReactionsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageReactionsTest.kt index f33ea23cdd8..d05a5c6a740 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageReactionsTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageReactionsTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class MessageReactionsTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageTextTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageTextTest.kt index 9defdaa3d78..48a8ca55a07 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageTextTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/MessageTextTest.kt @@ -16,10 +16,10 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import com.android.resources.ScreenOrientation +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -28,7 +28,7 @@ internal class MessageTextTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2.copy(orientation = ScreenOrientation.LANDSCAPE), + deviceConfig = PIXEL_2_HDPI.copy(orientation = ScreenOrientation.LANDSCAPE), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/PollMessageContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/PollMessageContentTest.kt index 23f6aed7acb..8768e8ea927 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/PollMessageContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/PollMessageContentTest.kt @@ -19,8 +19,9 @@ package io.getstream.chat.android.compose.ui.components.messages import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities @@ -31,7 +32,10 @@ import org.junit.Test internal class PollMessageContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `poll content`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/QuotedMessageTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/QuotedMessageTest.kt index 68750638a02..2ba48590de9 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/QuotedMessageTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/QuotedMessageTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class QuotedMessageTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) @@ -63,7 +63,7 @@ internal class QuotedMessageTest : PaparazziComposeTest { @Test fun `reply by me to other`() { - snapshotWithDarkModeRow { QuotedMessageReplyByMeToOther() } + snapshotWithDarkMode { QuotedMessageReplyByMeToOther() } } @Test diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/ScrollToFirstUnreadButtonTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/ScrollToFirstUnreadButtonTest.kt index ebe087cb17b..98178ac631c 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/ScrollToFirstUnreadButtonTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/ScrollToFirstUnreadButtonTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class ScrollToFirstUnreadButtonTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/SwipeToReplyIconTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/SwipeToReplyIconTest.kt index 8bfddc1e435..12259e20a9e 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/SwipeToReplyIconTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/messages/SwipeToReplyIconTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class SwipeToReplyIconTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollAnswersTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollAnswersTest.kt index b3ace438542..e140c17a123 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollAnswersTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollAnswersTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollAnswersTest : PaparazziComposeTest { @get:Rule - override val paparazzi: Paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun content() = snapshot { PollAnswersContent() } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollMoreOptionsDialogTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollMoreOptionsDialogTest.kt index 45e5cdc86c0..a046464cc72 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollMoreOptionsDialogTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollMoreOptionsDialogTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.components.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class PollMoreOptionsDialogTest : PaparazziComposeTest { @get:Rule override val paparazzi: Paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollOptionVotesDialogTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollOptionVotesDialogTest.kt index e70c1966941..416f647c372 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollOptionVotesDialogTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollOptionVotesDialogTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollOptionVotesDialogTest : PaparazziComposeTest { @get:Rule - override val paparazzi: Paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun loading() = snapshot { PollOptionVotesSheetLoading() } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollViewResultDialogTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollViewResultDialogTest.kt index 0bf9d7bdd8f..7478a8ff4a0 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollViewResultDialogTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/poll/PollViewResultDialogTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollViewResultDialogTest : PaparazziComposeTest { @get:Rule - override val paparazzi: Paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `poll results`() = snapshot { PollResultsSheet() } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerTest.kt index 44330c724be..947908b8d05 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/components/reactionpicker/ReactionsPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.components.reactionpicker -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.previewdata.PreviewMessageData import org.junit.Rule @@ -26,7 +27,10 @@ import org.junit.Test internal class ReactionsPickerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `reaction picker`() = snapshot { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/mentions/MentionListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/mentions/MentionListTest.kt index 64bc8e43a02..5857781f574 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/mentions/MentionListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/mentions/MentionListTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.mentions -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_4A_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class MentionListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_4A) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_4A_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `loading mention list`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageActionsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageActionsTest.kt index 82368bef567..b29815cd002 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageActionsTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageActionsTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.components.messageactions.MessageActionsForFailedMessage import io.getstream.chat.android.compose.ui.components.messageactions.MessageActionsForIncomingMessage @@ -28,7 +29,10 @@ import org.junit.Test internal class MessageActionsTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `my message`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerInputTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerInputTest.kt index e432dd8026f..adf6583bb75 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerInputTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerInputTest.kt @@ -17,8 +17,9 @@ package io.getstream.chat.android.compose.ui.messages import androidx.compose.ui.Alignment -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.components.composer.MessageComposerInputActiveCommandFilled import io.getstream.chat.android.compose.ui.components.composer.MessageComposerInputActiveCommandFilledInThreadMode @@ -45,7 +46,10 @@ import org.junit.Test internal class MessageComposerInputTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun placeholder() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerTest.kt index e09d016af35..e9666dcf89d 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageComposerTest.kt @@ -17,8 +17,9 @@ package io.getstream.chat.android.compose.ui.messages import androidx.compose.ui.Alignment -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.messages.composer.MessageComposerFixedStyle import io.getstream.chat.android.compose.ui.messages.composer.MessageComposerFixedStyleWithCommandSuggestions @@ -35,7 +36,10 @@ import org.junit.Test internal class MessageComposerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `fixed style`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageListTest.kt index e73c9d3900b..1f58f27224c 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/MessageListTest.kt @@ -21,8 +21,9 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.messages.list.MessageList import io.getstream.chat.android.compose.ui.messages.list.MessagesLazyListState @@ -47,7 +48,10 @@ import java.util.Calendar internal class MessageListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `empty messages`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCameraPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCameraPickerTest.kt index 3473c4262a0..1d00c0d3d85 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCameraPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCameraPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentCameraPickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `camera picker`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCommandPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCommandPickerTest.kt index fa6b4498536..a08811b645b 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCommandPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentCommandPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentCommandPickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `command picker`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentFilePickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentFilePickerTest.kt index f57a205cfc0..14a1887dd3f 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentFilePickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentFilePickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentFilePickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `single selection`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentMediaPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentMediaPickerTest.kt index 9054c2e5616..4ad274432bd 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentMediaPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentMediaPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentMediaPickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `selection`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentPollPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentPollPickerTest.kt index 6a0767d5523..099b53e2dc3 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentPollPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentPollPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentPollPickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `poll picker`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentSystemPickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentSystemPickerTest.kt index cf77e4639b4..4d9074c8c6f 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentSystemPickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentSystemPickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentSystemPickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `system picker`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentTypePickerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentTypePickerTest.kt index 95240901d93..b8b06ff8ad3 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentTypePickerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/AttachmentTypePickerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class AttachmentTypePickerTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `in-app picker`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/permission/RequiredPermissionTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/permission/RequiredPermissionTest.kt index ffdf1b9733e..ccd8a004a05 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/permission/RequiredPermissionTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/permission/RequiredPermissionTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.permission -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class RequiredPermissionTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.Companion.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `required media storage permission`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/CreatePollScreenTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/CreatePollScreenTest.kt index 900abba5d81..ff5ea9642fc 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/CreatePollScreenTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/CreatePollScreenTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.test.TestCoroutineRule import org.junit.Rule @@ -29,7 +30,10 @@ internal class CreatePollScreenTest : PaparazziComposeTest { val testCoroutineRule = TestCoroutineRule() @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `light mode`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationDiscardDialogTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationDiscardDialogTest.kt index 72630358b5a..465e5919290 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationDiscardDialogTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationDiscardDialogTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class PollCreationDiscardDialogTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationHeaderTest.kt index 644c498567a..0caea6c4d74 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationHeaderTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollCreationHeaderTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollCreationHeaderTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun enabled() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollOptionListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollOptionListTest.kt index ddde812e299..99b5ac2682d 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollOptionListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollOptionListTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollOptionListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `empty list`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollSwitchListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollSwitchListTest.kt index 10d0b99ccf9..cb1363c47f1 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollSwitchListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/attachments/poll/PollSwitchListTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.attachments.poll -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_4A_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class PollSwitchListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_4A) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_4A_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `list items`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingButtonTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingButtonTest.kt index 5d2c96cd071..3e1dd76b6d2 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingButtonTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingButtonTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class AudioRecordingButtonTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingContentTest.kt index e61d95fce2f..19515102f9d 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/AudioRecordingContentTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class AudioRecordingContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `hold content`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt index 66de36aaf84..df9af41d798 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/attachments/MessageComposerAttachmentsTest.kt @@ -16,10 +16,10 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal.attachments -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import com.android.resources.ScreenOrientation +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -28,7 +28,7 @@ internal class MessageComposerAttachmentsTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2.copy(orientation = ScreenOrientation.LANDSCAPE), + deviceConfig = PIXEL_2_HDPI.copy(orientation = ScreenOrientation.LANDSCAPE), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/CommandSuggestionListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/CommandSuggestionListTest.kt index 6239fc973fa..f8b6be12492 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/CommandSuggestionListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/CommandSuggestionListTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,27 +27,27 @@ internal class CommandSuggestionListTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) @Test fun `command suggestion list`() { - snapshotWithDarkModeRow { + snapshotWithDarkMode { CommandSuggestionList() } } @Test fun `command suggestion list in edit mode`() { - snapshotWithDarkModeRow { + snapshotWithDarkMode { CommandSuggestionListInEditMode() } } @Test fun `command suggestion list in reply mode`() { - snapshotWithDarkModeRow { + snapshotWithDarkMode { CommandSuggestionListInReplyMode() } } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt index 3efe5e79647..b6ec1b10a9c 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.previewdata.PreviewUserData import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention @@ -29,13 +29,13 @@ internal class MentionSuggestionListTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) @Test fun `mention suggestion list`() { - snapshotWithDarkModeRow { + snapshotWithDarkMode { MentionSuggestionList( mentions = listOf( Mention.Channel, diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt index cdd8da00051..8bd7378943b 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.header -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ChannelHeaderTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun connected() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/EmojiMessageContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/EmojiMessageContentTest.kt index b8f3660faff..42a5d0a26ac 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/EmojiMessageContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/EmojiMessageContentTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.list -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities @@ -32,7 +32,7 @@ internal class EmojiMessageContentTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesDateDividerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesDateDividerTest.kt index ee73be9a689..51e8e4c4534 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesDateDividerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesDateDividerTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.list -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class MessagesDateDividerTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesStripDividerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesStripDividerTest.kt index f6c5105ad23..b0e7561a661 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesStripDividerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/MessagesStripDividerTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.list -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class MessagesStripDividerTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/RegularMessageContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/RegularMessageContentTest.kt index ec489642af6..f16b85f854f 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/RegularMessageContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/RegularMessageContentTest.kt @@ -19,8 +19,9 @@ package io.getstream.chat.android.compose.ui.messages.list import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.util.extensions.toSet import io.getstream.chat.android.models.ChannelCapabilities @@ -31,7 +32,10 @@ import org.junit.Test internal class RegularMessageContentTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `own regular content`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/TypingIndicatorContentTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/TypingIndicatorContentTest.kt index 2abce9b23a0..b6dbf1af4f0 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/TypingIndicatorContentTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/list/TypingIndicatorContentTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.messages.list -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class TypingIndicatorContentTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageItemTest.kt index 1ca445c1cfc..4ae84cfbcf6 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageItemTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageItemTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.pinned -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.previewdata.PreviewPinnedMessageData import io.getstream.chat.android.previewdata.PreviewUserData @@ -27,7 +28,10 @@ import org.junit.Test internal class PinnedMessageItemTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun pinnedMessageItem() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageListTest.kt index 12f2bb491c8..b728492644a 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/pinned/PinnedMessageListTest.kt @@ -18,8 +18,9 @@ package io.getstream.chat.android.compose.ui.pinned import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.previewdata.PreviewPinnedMessageData import io.getstream.chat.android.ui.common.model.MessageResult @@ -30,7 +31,10 @@ import org.junit.Test internal class PinnedMessageListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `loading pinned messages`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadItemTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadItemTest.kt index 542eea608a2..b212c578bb9 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadItemTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadItemTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.threads -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.previewdata.PreviewThreadData import org.junit.Rule @@ -26,7 +27,10 @@ import org.junit.Test internal class ThreadItemTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun threadItem() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListBannerTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListBannerTest.kt index b2b637f9821..d18462f0486 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListBannerTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListBannerTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.threads -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ThreadListBannerTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `unread threads`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListHeaderTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListHeaderTest.kt index f613cbf4884..17a956601b3 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListHeaderTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListHeaderTest.kt @@ -16,8 +16,9 @@ package io.getstream.chat.android.compose.ui.threads -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -25,7 +26,10 @@ import org.junit.Test internal class ThreadListHeaderTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `connected, no user`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListTest.kt index 74f887478cc..d7fc1563138 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/threads/ThreadListTest.kt @@ -19,8 +19,9 @@ package io.getstream.chat.android.compose.ui.threads import androidx.compose.foundation.background import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.ui.Modifier -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi +import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.previewdata.PreviewThreadData @@ -31,7 +32,10 @@ import org.junit.Test internal class ThreadListTest : PaparazziComposeTest { @get:Rule - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val paparazzi = Paparazzi( + deviceConfig = PIXEL_2_HDPI, + renderingMode = SessionParams.RenderingMode.SHRINK, + ) @Test fun `loading threads`() { diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/MessagePreviewIconFactoryTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/MessagePreviewIconFactoryTest.kt index fc9182925dd..c3c1bb4c46d 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/MessagePreviewIconFactoryTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/MessagePreviewIconFactoryTest.kt @@ -16,9 +16,9 @@ package io.getstream.chat.android.compose.ui.util -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -27,7 +27,7 @@ internal class MessagePreviewIconFactoryTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2, + deviceConfig = PIXEL_2_HDPI, renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/StreamSnackbarTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/StreamSnackbarTest.kt index a4d34759261..34261e2aa41 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/StreamSnackbarTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/util/StreamSnackbarTest.kt @@ -16,10 +16,10 @@ package io.getstream.chat.android.compose.ui.util -import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import com.android.resources.ScreenOrientation +import io.getstream.chat.android.compose.ui.PIXEL_2_HDPI import io.getstream.chat.android.compose.ui.PaparazziComposeTest import org.junit.Rule import org.junit.Test @@ -28,7 +28,7 @@ internal class StreamSnackbarTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( - deviceConfig = DeviceConfig.PIXEL_2.copy(orientation = ScreenOrientation.LANDSCAPE), + deviceConfig = PIXEL_2_HDPI.copy(orientation = ScreenOrientation.LANDSCAPE), renderingMode = SessionParams.RenderingMode.SHRINK, ) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/AudioPlayerViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/AudioPlayerViewModelTest.kt new file mode 100644 index 00000000000..a147ec67db3 --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/AudioPlayerViewModelTest.kt @@ -0,0 +1,114 @@ +/* + * 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.compose.viewmodel.messages + +import androidx.lifecycle.ViewModelStore +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomFloat +import io.getstream.chat.android.ui.common.feature.messages.list.AudioPlayerController +import io.getstream.chat.android.ui.common.state.messages.list.AudioPlayerState +import kotlinx.coroutines.flow.MutableStateFlow +import org.amshove.kluent.`should be equal to` +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.verify + +internal class AudioPlayerViewModelTest { + + private lateinit var controllerState: MutableStateFlow + private lateinit var controller: AudioPlayerController + private lateinit var viewModel: AudioPlayerViewModel + + @BeforeEach + fun setUp() { + controllerState = MutableStateFlow(AudioPlayerState(getRecordingUri = { null })) + controller = mock { + on { state } doReturn controllerState + } + viewModel = AudioPlayerViewModel(controller) + } + + @Test + fun `state is exposed from the controller`() { + viewModel.state `should be equal to` controllerState + } + + @Test + fun `playOrPause toggles playback of the attachment`() { + val attachment = randomAttachment() + + viewModel.playOrPause(attachment) + + verify(controller).togglePlayback(attachment) + } + + @Test + fun `pause pauses the running audio`() { + viewModel.pause() + + verify(controller).pause() + } + + @Test + fun `changeSpeed changes the speed of the attachment`() { + val attachment = randomAttachment() + + viewModel.changeSpeed(attachment) + + verify(controller).changeSpeed(attachment) + } + + @Test + fun `seekTo seeks the attachment to the given progress`() { + val attachment = randomAttachment() + val progress = randomFloat() + + viewModel.seekTo(attachment, progress) + + verify(controller).seekTo(attachment, progress) + } + + @Test + fun `startSeek starts seeking the attachment`() { + val attachment = randomAttachment() + + viewModel.startSeek(attachment) + + verify(controller).startSeek(attachment) + } + + @Test + fun `reset resets the audio of the attachment`() { + val attachment = randomAttachment() + + viewModel.reset(attachment) + + verify(controller).resetAudio(attachment) + } + + @Test + fun `clearing the view model resets the controller`() { + val store = ViewModelStore() + store.put("audioPlayer", viewModel) + + store.clear() + + verify(controller).reset() + } +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollOptionVotesViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollOptionVotesViewModelTest.kt new file mode 100644 index 00000000000..0903672a05c --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollOptionVotesViewModelTest.kt @@ -0,0 +1,127 @@ +/* + * 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.compose.viewmodel.messages + +import androidx.lifecycle.viewModelScope +import app.cash.turbine.test +import io.getstream.chat.android.client.ChatClient +import io.getstream.chat.android.models.QueryPollVotesResult +import io.getstream.chat.android.randomOption +import io.getstream.chat.android.randomPoll +import io.getstream.chat.android.randomPollVote +import io.getstream.chat.android.randomString +import io.getstream.chat.android.test.TestCoroutineExtension +import io.getstream.chat.android.test.asCall +import io.getstream.chat.android.ui.common.feature.messages.poll.PollOptionVotesViewAction +import io.getstream.chat.android.ui.common.feature.messages.poll.PollOptionVotesViewController +import io.getstream.chat.android.ui.common.feature.messages.poll.PollOptionVotesViewEvent +import io.getstream.result.Error +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runTest +import org.amshove.kluent.`should be equal to` +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.doReturnConsecutively +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock + +@ExperimentalCoroutinesApi +@ExtendWith(TestCoroutineExtension::class) +internal class PollOptionVotesViewModelTest { + + private val option = randomOption() + private val poll = randomPoll( + options = listOf(option), + voteCountsByOption = mapOf(option.id to 2), + ) + + @Test + fun `initial votes are loaded for the option`() = runTest { + val votes = List(2) { randomPollVote(pollId = poll.id, optionId = option.id) } + val chatClient = mock { + on { queryPollVotes(eq(poll.id), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryPollVotesResult(votes = votes, next = null).asCall() + } + + val viewModel = viewModel(chatClient) + + val state = viewModel.state.value + state.option `should be equal to` option + state.voteCount `should be equal to` 2 + state.isWinner `should be equal to` true + state.isLoading `should be equal to` false + state.results `should be equal to` votes + state.canLoadMore `should be equal to` false + } + + @Test + fun `load more requested appends the next page of votes`() = runTest { + val firstPage = List(2) { randomPollVote(pollId = poll.id, optionId = option.id) } + val secondPage = List(2) { randomPollVote(pollId = poll.id, optionId = option.id) } + val chatClient = mock { + on { queryPollVotes(eq(poll.id), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturnConsecutively + listOf( + QueryPollVotesResult(votes = firstPage, next = randomString()).asCall(), + QueryPollVotesResult(votes = secondPage, next = null).asCall(), + ) + } + val viewModel = viewModel(chatClient) + + viewModel.onViewAction(PollOptionVotesViewAction.LoadMoreRequested) + + val state = viewModel.state.value + state.results `should be equal to` firstPage + secondPage + state.canLoadMore `should be equal to` false + state.isLoadingMore `should be equal to` false + } + + @Test + fun `load error emits a load error event`() = runTest { + val firstPage = List(2) { randomPollVote(pollId = poll.id, optionId = option.id) } + val error = Error.GenericError(randomString()) + val chatClient = mock { + on { queryPollVotes(eq(poll.id), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturnConsecutively + listOf( + QueryPollVotesResult(votes = firstPage, next = randomString()).asCall(), + error.asCall(), + ) + } + val viewModel = viewModel(chatClient) + + viewModel.events.test { + viewModel.onViewAction(PollOptionVotesViewAction.LoadMoreRequested) + + awaitItem() `should be equal to` PollOptionVotesViewEvent.LoadError(error) + } + viewModel.state.value.isLoadingMore `should be equal to` false + } + + private fun viewModel(chatClient: ChatClient) = PollOptionVotesViewModel( + poll = poll, + option = option, + controllerProvider = { + PollOptionVotesViewController( + poll = poll, + option = option, + chatClient = chatClient, + scope = viewModelScope, + ) + }, + ) +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollResultsViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollResultsViewModelTest.kt new file mode 100644 index 00000000000..115fb1a1181 --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/PollResultsViewModelTest.kt @@ -0,0 +1,97 @@ +/* + * 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.compose.viewmodel.messages + +import io.getstream.chat.android.models.VotingVisibility +import io.getstream.chat.android.randomOption +import io.getstream.chat.android.randomPoll +import io.getstream.chat.android.randomPollVote +import io.getstream.chat.android.ui.common.state.messages.poll.PollResultsViewState +import org.amshove.kluent.`should be equal to` +import org.junit.jupiter.api.Test + +internal class PollResultsViewModelTest { + + @Test + fun `state exposes the poll name and one result per option`() { + val option1 = randomOption() + val option2 = randomOption() + val votes = List(3) { randomPollVote(optionId = option1.id) } + val poll = randomPoll( + options = listOf(option1, option2), + votes = votes, + voteCountsByOption = mapOf(option1.id to 3), + votingVisibility = VotingVisibility.PUBLIC, + ) + + val viewModel = PollResultsViewModel(poll) + + val state = viewModel.state.value + state.pollName `should be equal to` poll.name + state.results `should be equal to` listOf( + PollResultsViewState.ResultItem( + option = option1, + isWinner = true, + voteCount = 3, + votes = votes, + showAllButton = false, + ), + PollResultsViewState.ResultItem( + option = option2, + isWinner = false, + voteCount = 0, + votes = emptyList(), + showAllButton = false, + ), + ) + } + + @Test + fun `show all button is shown when an option has more votes than the preview limit`() { + val option = randomOption() + val votes = List(6) { randomPollVote(optionId = option.id) } + val poll = randomPoll( + options = listOf(option), + votes = votes, + voteCountsByOption = mapOf(option.id to 6), + votingVisibility = VotingVisibility.PUBLIC, + ) + + val viewModel = PollResultsViewModel(poll) + + val result = viewModel.state.value.results.single() + result.votes `should be equal to` votes.take(5) + result.showAllButton `should be equal to` true + } + + @Test + fun `anonymous poll hides the voters but keeps the vote count`() { + val option = randomOption() + val poll = randomPoll( + options = listOf(option), + votes = List(3) { randomPollVote(optionId = option.id) }, + voteCountsByOption = mapOf(option.id to 3), + votingVisibility = VotingVisibility.ANONYMOUS, + ) + + val viewModel = PollResultsViewModel(poll) + + val result = viewModel.state.value.results.single() + result.votes `should be equal to` emptyList() + result.voteCount `should be equal to` 3 + } +} diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/ReactionsMenuViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/ReactionsMenuViewModelTest.kt new file mode 100644 index 00000000000..58c74224f49 --- /dev/null +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/ReactionsMenuViewModelTest.kt @@ -0,0 +1,140 @@ +/* + * 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.compose.viewmodel.messages + +import io.getstream.chat.android.client.ChatClient +import io.getstream.chat.android.models.QueryReactionsResult +import io.getstream.chat.android.randomReaction +import io.getstream.chat.android.randomString +import io.getstream.chat.android.test.TestCoroutineExtension +import io.getstream.chat.android.test.asCall +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runTest +import org.amshove.kluent.`should be equal to` +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.doReturnConsecutively +import org.mockito.kotlin.eq +import org.mockito.kotlin.isNotNull +import org.mockito.kotlin.isNull +import org.mockito.kotlin.mock +import org.mockito.kotlin.times +import org.mockito.kotlin.verify + +@ExperimentalCoroutinesApi +@ExtendWith(TestCoroutineExtension::class) +internal class ReactionsMenuViewModelTest { + + private val messageId = randomString() + + @Test + fun `all reactions are loaded on start`() = runTest { + val fetched = List(3) { randomReaction(messageId = messageId) } + val chatClient = mock { + on { queryReactions(eq(messageId), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = fetched, next = null).asCall() + } + + val viewModel = ReactionsMenuViewModel(messageId, emptyList(), chatClient) + + val state = viewModel.state.value + state.reactions `should be equal to` fetched + state.isLoading `should be equal to` false + state.selectedReactionType `should be equal to` null + } + + @Test + fun `selectReaction loads reactions filtered by type`() = runTest { + val all = List(3) { randomReaction(messageId = messageId) } + val likes = List(2) { randomReaction(messageId = messageId, type = "like") } + val chatClient = mock { + on { queryReactions(eq(messageId), isNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = all, next = null).asCall() + on { queryReactions(eq(messageId), isNotNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = likes, next = null).asCall() + } + val viewModel = ReactionsMenuViewModel(messageId, emptyList(), chatClient) + + viewModel.selectReaction("like") + + val state = viewModel.state.value + state.selectedReactionType `should be equal to` "like" + state.reactions `should be equal to` likes + state.isLoading `should be equal to` false + } + + @Test + fun `selecting the same type again clears the filter using the cached page`() = runTest { + val all = List(3) { randomReaction(messageId = messageId) } + val likes = List(2) { randomReaction(messageId = messageId, type = "like") } + val chatClient = mock { + on { queryReactions(eq(messageId), isNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = all, next = null).asCall() + on { queryReactions(eq(messageId), isNotNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = likes, next = null).asCall() + } + val viewModel = ReactionsMenuViewModel(messageId, emptyList(), chatClient) + + viewModel.selectReaction("like") + viewModel.selectReaction("like") + + val state = viewModel.state.value + state.selectedReactionType `should be equal to` null + state.reactions `should be equal to` all + verify(chatClient, times(1)) + .queryReactions(eq(messageId), isNull(), anyOrNull(), anyOrNull(), anyOrNull()) + } + + @Test + fun `loadMore appends the next page`() = runTest { + val firstPage = List(3) { randomReaction(messageId = messageId) } + val secondPage = List(2) { randomReaction(messageId = messageId) } + val chatClient = mock { + on { + queryReactions(eq(messageId), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) + } doReturnConsecutively listOf( + QueryReactionsResult(reactions = firstPage, next = randomString()).asCall(), + QueryReactionsResult(reactions = secondPage, next = null).asCall(), + ) + } + val viewModel = ReactionsMenuViewModel(messageId, emptyList(), chatClient) + + viewModel.loadMore() + + val state = viewModel.state.value + state.reactions `should be equal to` firstPage + secondPage + state.isLoadingMore `should be equal to` false + } + + @Test + fun `loadMore does nothing when all reactions are loaded`() = runTest { + val fetched = List(3) { randomReaction(messageId = messageId) } + val chatClient = mock { + on { queryReactions(eq(messageId), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } doReturn + QueryReactionsResult(reactions = fetched, next = null).asCall() + } + val viewModel = ReactionsMenuViewModel(messageId, emptyList(), chatClient) + + viewModel.loadMore() + + viewModel.state.value.reactions `should be equal to` fetched + verify(chatClient, times(1)) + .queryReactions(eq(messageId), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) + } +} diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_attachment_content.png index 3b8d07f62a1..a6c88241150 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_with_caption.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_with_caption.png index d321d801108..af1e1ec3dd3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_with_caption.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_with_caption.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_without_caption.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_without_caption.png index 3a2ab16778b..3a3e1994a6a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_without_caption.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_reply_without_caption.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_upload_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_upload_content.png index 5dfaa0ee6c7..e2d7a6daace 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_upload_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_audio_record_upload_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_compact_link_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_compact_link_attachment_content.png index e0b992e5e58..e4f0cd12418 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_compact_link_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_compact_link_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_attachment_content.png index dbe5f683dcc..75c2c753d5e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_upload_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_upload_content.png index 7dcb35e4f1d..9c4ffc99432 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_upload_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_file_upload_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content.png index 15f0cfb3028..b35920eae4c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_blank_title.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_blank_title.png index 15f0cfb3028..b35920eae4c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_blank_title.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_blank_title.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_non-interactive.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_non-interactive.png index 15f0cfb3028..b35920eae4c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_non-interactive.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_attachment_content_non-interactive.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_message_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_message_content.png index 32d75ffb6c3..268d48bf563 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_message_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_giphy_message_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_link_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_link_attachment_content.png index 6d6849d4fb6..9afed974299 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_link_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_link_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_multiple_media_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_multiple_media_attachment_content.png index 0d14af439d2..93b6d06ba5d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_multiple_media_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_multiple_media_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_single_media_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_single_media_attachment_content.png index 3422ba33310..ac7508c53ca 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_single_media_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_single_media_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_unsupported_attachment_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_unsupported_attachment_content.png index 9018c49a769..9ba4a93d86b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_unsupported_attachment_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.content_AttachmentsContentTest_unsupported_attachment_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu.png index 611e83dfd85..446ada210b7 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu_in_dark_mode.png index 6e196de3d61..c656b673311 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview.internal_MediaGalleryPhotosMenuTest_photos_menu_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user.png index 048e79bf92b..d7f933ea91d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user_in_dark_mode.png index fb5f8daa572..e6085d52f74 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_other_user_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user.png index cb31c617180..1fe8b4f909a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user_in_dark_mode.png index 85319eaa2e7..89b0786e92c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewOptionsMenuTest_media_gallery_options_menu_for_own_user_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_connected.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_connected.png index 78f32ca2f40..11a5f5039ab 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_connected.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_connected.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_offline.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_offline.png index 3965108c42e..921b7efa2c9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_offline.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_offline.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_sharing_in_progress.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_sharing_in_progress.png index 4ab28a7147a..ef2aa1c08d9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_sharing_in_progress.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_footer_sharing_in_progress.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_connecting.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_connecting.png index 5086c878dd1..b6bd3a5b0f5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_connecting.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_connecting.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_message_without_id.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_message_without_id.png index a06fadaf890..95ccb499d62 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_message_without_id.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_message_without_id.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_offline.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_offline.png index d892a55613f..e7c4f0d0659 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_offline.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_offline.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_online.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_online.png index c0baf79388f..d60d1bcec3d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_online.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_header_online.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected.png index a10700bc79d..1b70fd73e92 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected_in_dark_mode.png new file mode 100644 index 00000000000..b7e2b7604d9 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_connected_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline.png index a1fef754696..68a452d419f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline_in_dark_mode.png new file mode 100644 index 00000000000..e62129489ce Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_offline_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet.png index f834f1c212d..07f4689c4cd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet_in_dark_mode.png new file mode 100644 index 00000000000..646db5be2e1 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_gallery_bottom_sheet_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu.png index 4ee7707d28a..77299333a3c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu_in_dark_mode.png new file mode 100644 index 00000000000..d039edadb80 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_options_menu_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt.png index a54de831167..6d02ee73b64 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt_in_dark_mode.png new file mode 100644 index 00000000000..8afce9bb1b7 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.attachments.preview_MediaGalleryPreviewScreenTest_media_gallery_screen_with_share_large_file_prompt_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_content.png index a204d8790f6..7e749d5e1ad 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_empty.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_empty.png index cca22cc19eb..4213fff3417 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_empty.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_empty.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_error.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_error.png index a1dd3ed51c3..8316dfe5b2f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_error.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_error.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading.png index b86ebe310f3..a3395b75109 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading_more.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading_more.png index e437beb27a0..a67d7aa5e4e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading_more.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelFilesAttachmentsContentTest_loading_more.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_content.png index 05df2bcbaee..03e567533de 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_empty.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_empty.png index 66cb8aabbdf..6670484290a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_empty.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_empty.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_error.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_error.png index edc43255633..4fdd4913b33 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_error.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_error.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading.png index b662635802c..7b7fc298604 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading_more.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading_more.png index 6dd8883b76d..f6af8c48a39 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading_more.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsContentTest_loading_more.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content.png index a732775834c..1eee11cfe78 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content_in_dark_mode.png index b532d560883..a90d3d00840 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content.png index 762d07e8de4..4f27b13190e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content_in_dark_mode.png index d1c0bbb6f6a..8a5050e8707 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewContentTest_preparing_to_share_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet.png index 276ca610918..5391d5403f8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet_in_dark_mode.png index 68f2b3a8cd8..303e1d90fe3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.attachments_ChannelMediaAttachmentsPreviewSheetTest_preview_sheet_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty.png index ff3ef2c3cab..5b67fe45dc3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty_in_dark_mode.png index 08a54da51ca..edf79c7bed9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_empty_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading.png index 913c6899bc9..552e0e37a99 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_in_dark_mode.png index 5b500505302..84953f88776 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more.png index 48b932ec8fd..5fd794b7548 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more_in_dark_mode.png index 02dc0a96299..f12cff0b425 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_loading_more_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results.png index 190a99b764c..95cd7a43e76 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_in_dark_mode.png index 8415343ffec..2f3411fe409 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member.png index 7b94b094549..da8e0d4a09e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member_in_dark_mode.png index c23ddab1c82..d137a676d80 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_existing_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query.png index 4b0903d55eb..c6b1e7246e5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query_in_dark_mode.png index 39d4d486393..331c96d0a4e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_query_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection.png index c170a1bc8f8..07e751d6331 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection_in_dark_mode.png index 1545a18a054..1a6fe9e573b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_AddMembersScreenTest_results_with_selection_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member.png index 2f5a8958701..6e2b85647dc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member_in_dark_mode.png index f3e33350d85..9260de85ef7 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_banned_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role.png index e094e8c31b2..81513efc9bc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role_in_dark_mode.png index 2bc920866b4..9e4ca4f6544 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_muted_member_with_role_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member.png index 8c2eb66ea0c..fe13daf6d27 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member_in_dark_mode.png index 40ec54ccae7..47aa28e4d31 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_not_banned_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member.png index 0474eb99571..99f2ce1c68f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member_in_dark_mode.png index fcfdaaf5381..64f1f6daa51 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoMemberInfoModalSheetTest_owner_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_dark_mode.png index a6578eeece2..31dbad17e16 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_light_mode.png index 0fc748f4f82..5191666d840 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_direct_channel_info_option_items_in_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_dark_mode.png index e0667609c5c..ad5c53fda4a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_light_mode.png index 4ec7047591e..78ab526c8b6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoOptionItemTest_group_channel_info_option_items_in_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member.png index 6709bb98098..d05461c4737 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member_in_dark_mode.png index b53068bb0a5..c2f198fa9c9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_ban_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel.png index eafe4c6267c..6afa45db708 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel_in_dark_mode.png index 020226b8fec..7cf8888b52f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_direct_channel_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel.png index ab79fbe72e2..ca6fdd64268 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel_in_dark_mode.png index 49c0fcc4759..48ca58c71d8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_delete_group_channel_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel.png index 6f283c64388..cbc68fe3885 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel_in_dark_mode.png index 63bf6d2561b..fc037611779 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_direct_channel_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel.png index 54add29bfc3..4e7319c958d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel_in_dark_mode.png index 22df8d3e7c5..04d116bb495 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_leave_group_channel_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member.png index dbfc3515f05..45b5d2b8ac1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member_in_dark_mode.png index 138ae81f4bd..dd681c86d08 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_ChannelInfoScreenModelTest_remove_member_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content.png index e8794013dfe..5cdcc1dee95 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content_in_dark_mode.png index 2c3af855f37..40068c72a03 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_channel_muted_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content.png index f0d973e3829..e13430f63d5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content_in_dark_mode.png index 7df31fa5562..6b4d7fe86fd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading.png index b5217e67296..95593e349a9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading_in_dark_mode.png index 0928165eea6..91dd1359f31 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_loading_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content.png index 831917d7bcc..e8261ff807a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content_in_dark_mode.png index b9345fd5847..e1528682130 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_DirectChannelInfoContentTest_user_muted_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_busy.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_busy.png index 4f0974a7854..d46cec3876b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_busy.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_busy.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_filled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_filled.png index aab45268ab0..e7a4548a04f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_filled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_filled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove.png index 0ea804b70f5..7e77df44302 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove_in_dark_mode.png index 19713666ffb..e746306ef9f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_no_remove_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove.png index 0552b56c3d8..14504730e5a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove_in_dark_mode.png index ba14a520062..c2437f4ed00 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_image_picker_with_remove_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_placeholder.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_placeholder.png index 1aa32f790e1..82ba6690695 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_placeholder.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelEditScreenTest_placeholder.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members.png index 9aff7fb1c42..257978e0a36 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members_in_dark_mode.png index c39da6c95a0..8933bf7abcd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_collapsed_members_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members.png index 0a68770b58f..26d50a37bd8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members_in_dark_mode.png index da8143cd35c..57d803ed6fb 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_expanded_members_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading.png index a664266033f..4c8c2421d06 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading_in_dark_mode.png index c0c51bc1bbf..2e435139241 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channel.info_GroupChannelInfoContentTest_loading_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet.png index f953c0cb0ef..e32ebaebbc0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted.png index 70c416126a2..13961fe18dc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted_in_dark_mode.png index 8c2ed34dd00..3041122f044 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_dm_user_muted_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_in_dark_mode.png index 45f29a632d8..50231e9346a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned.png index d560247998d..b2d7ed5edfc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned_in_dark_mode.png index 33034a291fd..b2786d4e266 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_muted_and_pinned_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user.png index 665c589d15b..c4002310c9f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user_in_dark_mode.png index 1492d78030e..b26f6505d0a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.info_ChannelActionsSheetTest_channel_actions_sheet_without_current_user_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_ChannelListBannerTest_error_state.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_ChannelListBannerTest_error_state.png index a6e1cbb9236..64ee112334f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_ChannelListBannerTest_error_state.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_ChannelListBannerTest_error_state.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_muted_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_muted_channel.png new file mode 100644 index 00000000000..7e07723aa1b Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_muted_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_unmuted_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_unmuted_channel.png new file mode 100644 index 00000000000..a40ff63a61a Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_DefaultChannelSwipeActionsTest_swipe_actions_for_unmuted_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeActionItemTest_swipe_action_item_styles.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeActionItemTest_swipe_action_item_styles.png new file mode 100644 index 00000000000..0b300d3186a Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeActionItemTest_swipe_action_item_styles.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeableChannelItemTest_closed_swipeable_channel_item_hides_the_actions_behind_the_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeableChannelItemTest_closed_swipeable_channel_item_hides_the_actions_behind_the_content.png new file mode 100644 index 00000000000..84fe9cc5b03 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels.list_SwipeableChannelItemTest_closed_swipeable_channel_item_hides_the_actions_behind_the_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_draft_message.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_draft_message.png index fc297bb83e1..ba356d122aa 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_draft_message.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_draft_message.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_delivered_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_delivered_status.png index 1cfaf0a4cbe..14de1ed9405 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_delivered_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_delivered_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_pending_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_pending_status.png index c0075fe44e9..9de01c28c19 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_pending_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_pending_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_seen_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_seen_status.png index 952a541b257..75f2ded9c6c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_seen_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_seen_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_sent_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_sent_status.png index 9d337814cef..44427c76dc3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_sent_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_last_message_sent_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel.png index a4f6cc0ba41..2a39ea22f2b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_mixed_positions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_mixed_positions.png index 756a89d10ed..1719b5b7890 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_mixed_positions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_mixed_positions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_trailing_bottom.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_trailing_bottom.png index 119491c4b15..2ba98a46ab2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_trailing_bottom.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_and_pinned_channel_trailing_bottom.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel.png index b529ab5e294..b763530250e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel_trailing_bottom.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel_trailing_bottom.png index 0ca1619a916..7fe5021f983 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel_trailing_bottom.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_muted_channel_trailing_bottom.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_no_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_no_messages.png index 9b6467b8d74..51178605220 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_no_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_no_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel.png index 6bd16b13995..e4e699b65fc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel_trailing_bottom.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel_trailing_bottom.png index 6fcfc9dd7cc..abbd98696f8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel_trailing_bottom.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_pinned_channel_trailing_bottom.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_unread_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_unread_messages.png index 6523e453284..f0b297604ca 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_unread_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelItemTest_unread_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_no_user.png index 5d378d971f7..c13a0bb63d0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_with_user.png index ea4d092d0c9..2891744f347 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connected,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_no_user.png index 8f1af967c56..c37f8cdb21c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_with_user.png index 2b632f3a159..eb110b9538e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_connecting,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_no_user.png index db305972eeb..679293c4c82 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_with_user.png index 51917564028..0977211d259 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListHeaderTest_offline,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_channels.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_channels.png index 4c94584c502..0b0880bb409 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_channels.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_channels.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_search_results.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_search_results.png index 9ffd242c37e..8697a26e6af 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_search_results.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_empty_search_results.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loaded_channels.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loaded_channels.png index d937de542e5..8c841c639ba 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loaded_channels.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loaded_channels.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_channels.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_channels.png index 6839e2d0dea..c7772e363e4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_channels.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_channels.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_more_channels.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_more_channels.png index 830e5f20385..d5e07cb9595 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_more_channels.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_loading_more_channels.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_search_results.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_search_results.png index b2f37e392fe..ab49f4218db 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_search_results.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelListTest_search_results.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels.png index 0be9f38f05d..9e8a4168fe3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels_in_dark_mode.png new file mode 100644 index 00000000000..9b8f5ebc100 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_ChannelsTest_loaded_channels_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel.png index 162c56275c3..97ae1e1bd49 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog.png index f3ea11a3170..041e2a24dfa 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog_in_dark_mode.png index 17351e8d4d1..4df0f735ab8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_centered_dialog_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_in_dark_mode.png index 3ae6c27c4d2..c57b0b5a641 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned.png index c0eba4c0539..68ab37654b7 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned_in_dark_mode.png index 06467d5436e..0c610104bb1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.channels_SelectedChannelMenuTest_selected_channel_muted_and_pinned_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FileTypeIconTest_file_type_icons.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FileTypeIconTest_file_type_icons.png index fc00530cf12..e28ff0044bd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FileTypeIconTest_file_type_icons.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FileTypeIconTest_file_type_icons.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_multiple_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_multiple_selection.png index cd9ffa62493..c4e4b3e00c2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_multiple_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_multiple_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_single_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_single_selection.png index 3c02d47cbb9..52c5e7eb144 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_single_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.files_FilesPickerTest_single_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_add_more.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_add_more.png index 0d04d03b318..40437394860 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_add_more.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_add_more.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_selection.png index 44176b08f1d..9bbe4c99c81 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.attachments.images_ImagesPickerTest_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_full_track.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_full_track.png index 4a64c726302..e3bf2ba3ea0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_full_track.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_full_track.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_paused.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_paused.png index d9269bb9003..2bd5417b403 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_paused.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_paused.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_at_start.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_at_start.png index 9e97eac141f..d76978b67f4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_at_start.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_at_start.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway.png index 21ff07fb6fa..65458358909 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway_rtl.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway_rtl.png index 6b4c4e48c51..6cd3fa9d7cb 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway_rtl.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_playing_midway_rtl.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_renders_at_sub-handle_width.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_renders_at_sub-handle_width.png index 803a1685c04..3a3292bbac5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_renders_at_sub-handle_width.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_renders_at_sub-handle_width.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_without_thumb.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_without_thumb.png index c9492e7c7c4..bed64a35618 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_without_thumb.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.audio_WaveformSliderTest_slider_without_thumb.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_dark_mode.png index b23c6f2cf16..290d6cb5aef 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_light_mode.png index abd0eb78fa3..482c3f04076 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_ChannelAvatarTest_channel_avatar_in_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_UserAvatarTest_user_avatar.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_UserAvatarTest_user_avatar.png index 6b69ffc6396..bff4d36ac05 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_UserAvatarTest_user_avatar.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.avatar_UserAvatarTest_user_avatar.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_button_sizes.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_button_sizes.png index 0debf66a206..1fefc16cf9a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_button_sizes.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_button_sizes.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_disabled_buttons.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_disabled_buttons.png index ff000255a5b..767abd81438 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_disabled_buttons.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_disabled_buttons.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_enabled_buttons.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_enabled_buttons.png index 2c73a2d4790..544687bc895 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_enabled_buttons.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.button_StreamButtonTest_enabled_buttons.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_channel_options.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_channel_options.png new file mode 100644 index 00000000000..9103482a6a3 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_channel_options.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions.png new file mode 100644 index 00000000000..756f6c21fdd Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions_for_muted_and_blocked_counterpart.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions_for_muted_and_blocked_counterpart.png new file mode 100644 index 00000000000..0a397cb08a6 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_dm_channel_actions_for_muted_and_blocked_counterpart.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_member.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_member.png new file mode 100644 index 00000000000..0de98c71338 Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_member.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_owner.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_owner.png new file mode 100644 index 00000000000..8a61b08c47d Binary files /dev/null and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_ChannelOptionsTest_default_group_channel_actions_for_owner.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_delivered_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_delivered_status.png index 6dc5fff8d64..4d7ab96d79a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_delivered_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_delivered_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_error_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_error_status.png index cdc7d0efee3..cbfe4a95f76 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_error_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_error_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_pending_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_pending_status.png index 87490296e43..c9d7f9419f4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_pending_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_pending_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_read_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_read_status.png index 45c026bb3d3..7fa2741ae73 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_read_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_read_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_sent_status.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_sent_status.png index e26a7a8a784..799c31eb32d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_sent_status.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.channels_MessageReadStatusIconTest_sent_status.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CheckboxTest_checkbox_states.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CheckboxTest_checkbox_states.png index 189a725ae46..213e3e3cf50 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CheckboxTest_checkbox_states.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CheckboxTest_checkbox_states.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CountBadgeTest_count_badge_sizes.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CountBadgeTest_count_badge_sizes.png index bccaea827ed..05ec5301d45 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CountBadgeTest_count_badge_sizes.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.common_CountBadgeTest_count_badge_sizes.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_ComposerLinkPreviewTest_composer_link_preview.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_ComposerLinkPreviewTest_composer_link_preview.png index cf73bfbb837..45283f885db 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_ComposerLinkPreviewTest_composer_link_preview.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_ComposerLinkPreviewTest_composer_link_preview.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_empty.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_empty.png index 7ece05e2e61..3442eeaa626 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_empty.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_empty.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_filled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_filled.png index 2e146608e09..5680c809b25 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_filled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.composer_InputFieldTest_input_field_filled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions.png index e6cd99df6c7..246b57d20ac 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions_in_dark_mode.png index fa49bfd3f88..405c77dcc86 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_many_reactions_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction.png index 2eedad5fcb5..c23d16779b1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction_in_dark_mode.png index f3691132fbb..17ec8cecb5c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messageactions_ReactionsMenuTest_reactions_menu_one_reaction_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageAnnotationTest_message_annotations.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageAnnotationTest_message_annotations.png index d37a9014e95..c215f5dc947 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageAnnotationTest_message_annotations.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageAnnotationTest_message_annotations.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_and_deleted_message_footer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_and_deleted_message_footer.png index ffc0ebe8177..0affa34cbba 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_and_deleted_message_footer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_and_deleted_message_footer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_message_footer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_message_footer.png index 1ae7d1bce0b..967fa7c739e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_message_footer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_edited_message_footer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_other_user_message_footer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_other_user_message_footer.png index ffc0ebe8177..0affa34cbba 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_other_user_message_footer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_other_user_message_footer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_outgoing_thread_start_with_replies.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_outgoing_thread_start_with_replies.png index 14e967d2d7b..e55d178f53c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_outgoing_thread_start_with_replies.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_outgoing_thread_start_with_replies.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_own_message_footer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_own_message_footer.png index 2ea3e776ccf..d4d79796153 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_own_message_footer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_own_message_footer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_footer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_footer.png index 7aee154d2b7..38f29c0b893 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_footer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_footer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_no_replies.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_no_replies.png index 9d646e882a2..a30f3105333 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_no_replies.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_no_replies.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_replies.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_replies.png index 80ed8d81178..04c66a82057 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_replies.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageFooterTest_thread_start_with_replies.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_clustered_reactions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_clustered_reactions.png index d5d1c78243c..2d989be64b1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_clustered_reactions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_clustered_reactions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions.png index a7ae4e32a85..415204560fc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions_in_dark_mode.png index 70cbbc61c66..02fc38dd6a2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_overflow_segmented_reactions_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_segmented_reactions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_segmented_reactions.png index 7e0d94b722a..2a9333f0f7a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_segmented_reactions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageReactionsTest_segmented_reactions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_plain_text.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_plain_text.png index 6a4bf5f7e25..f5992224b57 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_plain_text.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_plain_text.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_rtl_text_aligns_to_the_end.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_rtl_text_aligns_to_the_end.png index 35c0a9c7303..efddd8b857a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_rtl_text_aligns_to_the_end.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_rtl_text_aligns_to_the_end.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_all_mention_types.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_all_mention_types.png index f663215071f..1fe316d7d4a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_all_mention_types.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_all_mention_types.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_email.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_email.png index 239c6411f1a..a2f2ad5a04e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_email.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_email.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_mention.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_mention.png index 123ab90e280..a5ba96c37ed 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_mention.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_mention.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url.png index 58ecf60dd16..8369a14424b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url_and_mention.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url_and_mention.png index 3807d933be5..6b2376198f3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url_and_mention.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_MessageTextTest_text_with_url_and_mention.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_error_poll_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_error_poll_content.png index d24290a4bbd..ff2abbf737a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_error_poll_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_error_poll_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_poll_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_poll_content.png index b464dd02d22..b7796dc60d8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_poll_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_PollMessageContentTest_poll_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_other_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_other_user.png index ac1f844c1df..9f2692333f0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_other_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_other_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_self.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_self.png index 4a1a141c12e..8d706adc2db 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_self.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_from_self.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_in_composer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_in_composer.png index a3fc7d687a7..1ae2ec8e79a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_in_composer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_in_composer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_me_to_other.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_me_to_other.png index 3c4e1f180c9..5980154a86f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_me_to_other.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_me_to_other.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_other_to_me.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_other_to_me.png index dbc5baddea3..fd696b35049 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_other_to_me.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_reply_by_other_to_me.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_rtl_text_aligns_to_the_end.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_rtl_text_aligns_to_the_end.png index cf98b58e393..2b6611a3d34 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_rtl_text_aligns_to_the_end.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_rtl_text_aligns_to_the_end.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_file_attachment.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_file_attachment.png index 8c755b7f9a9..07bbf22c936 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_file_attachment.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_file_attachment.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_image_attachment.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_image_attachment.png index 04df5c36203..5ac8c9421dc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_image_attachment.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_image_attachment.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_long_text.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_long_text.png index c62b390b2ef..aa4ffca4641 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_long_text.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_QuotedMessageTest_with_long_text.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_ScrollToFirstUnreadButtonTest_pill_with_unread_count.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_ScrollToFirstUnreadButtonTest_pill_with_unread_count.png index 77cfea5f179..5db5523899d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_ScrollToFirstUnreadButtonTest_pill_with_unread_count.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_ScrollToFirstUnreadButtonTest_pill_with_unread_count.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_SwipeToReplyIconTest_swipe_to_reply_icon.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_SwipeToReplyIconTest_swipe_to_reply_icon.png index ebc203f4904..2b685767698 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_SwipeToReplyIconTest_swipe_to_reply_icon.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.messages_SwipeToReplyIconTest_swipe_to_reply_icon.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous.png index c2994eda18f..60dc371f633 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous_in_dark_mode.png index e14a60d6d4e..20f54f8c155 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_closed_anonymous_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content.png index 7f8db71bbf8..162ac7dddb4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content_in_dark_mode.png index 19213c2ef73..51a9c31d5cd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer.png index b4673a2530e..2378ca9e246 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer_in_dark_mode.png index 2ea5339c3ac..8c99e2214df 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollAnswersTest_with_current_user_answer_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options.png index ee67370df14..539c7492abe 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options_in_dark_mode.png index b5901a0fb6b..270b431f873 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollMoreOptionsDialogTest_more_options_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content.png index 5e55a1a6fa5..f2027b13ff3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content_in_dark_mode.png index dbab5e2d959..67c56a65f77 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_content_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading.png index 99424117efc..194f6a945bb 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_in_dark_mode.png index 251104df468..dd85eadeb51 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more.png index 375adf989b9..cfa7d79048f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more_in_dark_mode.png index dfc231b5c6e..418b3a70e2f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollOptionVotesDialogTest_loading_more_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results.png index a333e7733d7..bbf7c0814e2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results_in_dark_mode.png index 7e2f2f1a43c..5c70eb602b9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.poll_PollViewResultDialogTest_poll_results_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker.png index dad797913fe..947a195da2d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker_in_dark_mode.png index 1350330d6e1..e461be44415 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components.reactionpicker_ReactionsPickerTest_reaction_picker_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_empty_query.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_empty_query.png index 54c2b7b6e03..0c35b8633f4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_empty_query.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_empty_query.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_filled_query.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_filled_query.png index d87f7c2df0f..bd3aeb72d61 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_filled_query.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_focused_filled_query.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_unfocused_empty_query.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_unfocused_empty_query.png index cca14d87318..6501c9af14a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_unfocused_empty_query.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.components_SearchInputTest_unfocused_empty_query.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_empty_mention_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_empty_mention_list.png index db50c9c6ba4..86da656cccd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_empty_mention_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_empty_mention_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loaded_mention_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loaded_mention_list.png index 126a62159e3..2ca64561962 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loaded_mention_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loaded_mention_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_mention_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_mention_list.png index 288a5830622..22f21a35823 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_mention_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_mention_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_more_mention_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_more_mention_list.png index 337ee57edcc..82aae011b72 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_more_mention_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.mentions_MentionListTest_loading_more_mention_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_camera_permission.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_camera_permission.png index 48d7c4bda06..a47751ca1fc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_camera_permission.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_camera_permission.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_files_storage_permission.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_files_storage_permission.png index 8bf45e8a2ff..6073b3bb1bd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_files_storage_permission.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_files_storage_permission.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_media_storage_permission.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_media_storage_permission.png index c039fd8c99d..64b77a421cc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_media_storage_permission.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.permission_RequiredPermissionTest_required_media_storage_permission.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_dark_mode.png index 3d14736132d..9d70ae67f76 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_light_mode.png index 0c07f38c0b6..9f78816db3d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_CreatePollScreenTest_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_dark_mode.png index dbaf13a8233..399a5b40d9b 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_light_mode.png index 6a51ef34c71..e046fc4cd39 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationDiscardDialogTest_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_disabled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_disabled.png index 9f0fe155269..985c5ce861d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_disabled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_disabled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_enabled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_enabled.png index 84676935a6d..7a98eae55a4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_enabled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollCreationHeaderTest_enabled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_blank_items.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_blank_items.png index b20b310f0db..30d3232ff25 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_blank_items.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_blank_items.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_duplicated_error.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_duplicated_error.png index c550d4220c0..7432255c26a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_duplicated_error.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_duplicated_error.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_empty_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_empty_list.png index caada28b8f3..1824cd3d5e2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_empty_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollOptionListTest_empty_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollSwitchListTest_list_items.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollSwitchListTest_list_items.png index 056e701d207..8b2cf775d10 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollSwitchListTest_list_items.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments.poll_PollSwitchListTest_list_items.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCameraPickerTest_camera_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCameraPickerTest_camera_picker.png index dcba620e139..d9c433ab0f4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCameraPickerTest_camera_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCameraPickerTest_camera_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker.png index 7b10da0331d..f81ebeb0c70 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_edit_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_edit_mode.png index 3f0b2a7dfe1..3ee76c81cfc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_edit_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_edit_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_reply_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_reply_mode.png index 86a548d36b2..825d4368dc7 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_reply_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentCommandPickerTest_command_picker_in_reply_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_multiple_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_multiple_selection.png index 32c3d47de26..c4b4ea09758 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_multiple_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_multiple_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_single_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_single_selection.png index 34d8a11290b..bcc3bd9ce1d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_single_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentFilePickerTest_single_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentMediaPickerTest_selection.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentMediaPickerTest_selection.png index dff34f582fc..0ac976ba11f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentMediaPickerTest_selection.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentMediaPickerTest_selection.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentPollPickerTest_poll_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentPollPickerTest_poll_picker.png index 9c71feb38f4..77e8f7997bf 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentPollPickerTest_poll_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentPollPickerTest_poll_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet.png index 4c8457eb3aa..611e45c9c84 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet_in_dark_mode.png index 641b854d3ab..2aadbb8c5e8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_command_picker_sheet_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker.png index 110581cb564..7904bc040b9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_commands.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_commands.png index 9e77e0459de..498046800e4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_commands.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_commands.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_polls.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_polls.png index 52b4c445dae..2d8f50d396f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_polls.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentSystemPickerTest_system_picker_with_polls.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker.png index c38f86d8dea..3c8be74c47e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_commands.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_commands.png index 3e59730ab5b..5124057a4ed 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_commands.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_commands.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_polls.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_polls.png index 709a25d1bc2..1b0c8f3b47f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_polls.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_in-app_picker_with_polls.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker.png index 110581cb564..7904bc040b9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_commands.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_commands.png index 9e77e0459de..498046800e4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_commands.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_commands.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_polls.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_polls.png index 52b4c445dae..2d8f50d396f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_polls.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.attachments_AttachmentTypePickerTest_system_picker_with_polls.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_audio_record_attachment_item.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_audio_record_attachment_item.png index 4869fe62cc1..e381d533e82 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_audio_record_attachment_item.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_audio_record_attachment_item.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item.png index bdc5e7d7d2a..935ad26ca77 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png index 675f79136d9..4f3def12dd6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_file_attachment_item_without_title_or_name.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item.png index d4d0438d568..059b9f4fda1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png index d4d0438d568..059b9f4fda1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_image_attachment_item_without_title_or_name.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_message_composer_attachments.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_message_composer_attachments.png index 54dcdd4108c..6d0c093dade 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_message_composer_attachments.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_message_composer_attachments.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item.png index 29724311879..7c262f1b751 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png index 29724311879..7c262f1b751 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.attachments_MessageComposerAttachmentsTest_video_attachment_item_without_title_or_name.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list.png index 207c7102d2d..e935f2c442f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_edit_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_edit_mode.png index ca75cadba7e..f363064985e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_edit_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_edit_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_reply_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_reply_mode.png index 98cfbe3cef5..be18d816cae 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_reply_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_CommandSuggestionListTest_command_suggestion_list_in_reply_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png index f1fcc13be17..c0efd1cab22 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_hold.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_hold.png index 9ae8a385468..698db29ff30 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_hold.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_hold.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_idle.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_idle.png index 82748666d10..0fbe0685768 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_idle.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_idle.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_locked.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_locked.png index 65e0edf0eaa..8ac7d7c5b9f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_locked.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_locked.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_overview.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_overview.png index b2f6a8e8545..28d831f64cd 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_overview.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingButtonTest_button_overview.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_hold_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_hold_content.png index 628fa7aac94..3e1eeac499e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_hold_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_hold_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_locked_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_locked_content.png index 39a7bc15c89..fcc4f414987 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_locked_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_locked_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_overview_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_overview_content.png index 88c735487fa..bf425803c64 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_overview_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal_AudioRecordingContentTest_overview_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png index 1392f32a351..c97bdb70915 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connected.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png index 6254e280492..de0065c9dd5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_connecting.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png index 13f36766edf..39f006d39eb 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_few_members.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png index 1f5c12dfde5..63e81286925 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_many_members.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png index c9e4098bc32..3fe6c91fbf2 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_offline.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png index f222dcde316..7e323620d06 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.header_ChannelHeaderTest_thread_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_emoji_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_emoji_content.png index 1e7914cd6b7..be178bfbb8e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_emoji_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_emoji_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_error_emoji_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_error_emoji_content.png index 7f1e828738d..6a7257ab3f1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_error_emoji_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_EmojiMessageContentTest_error_emoji_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_absolute_date.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_absolute_date.png index c5c6713c817..0d49abf42fe 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_absolute_date.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_absolute_date.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_today.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_today.png index f5a70ed44d1..7570c9d173e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_today.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesDateDividerTest_messages_date_divider_today.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_replies.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_replies.png index e3a1f79b40b..75631d53c54 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_replies.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_replies.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_unread.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_unread.png index fc3005d16c7..49ac49d18ee 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_unread.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_MessagesStripDividerTest_messages_strip_divider_unread.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_error_own_regular_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_error_own_regular_content.png index d1f3553d26b..5a0986a62c6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_error_own_regular_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_error_own_regular_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_other_regular_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_other_regular_content.png index 3b8cc55094e..5f91831b975 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_other_regular_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_other_regular_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_own_regular_content.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_own_regular_content.png index 86243b90943..94d383b319d 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_own_regular_content.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_RegularMessageContentTest_own_regular_content.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_TypingIndicatorContentTest_multiple_users_typing.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_TypingIndicatorContentTest_multiple_users_typing.png index 10b05e87ced..9060a31f753 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_TypingIndicatorContentTest_multiple_users_typing.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.list_TypingIndicatorContentTest_multiple_users_typing.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message.png index d632bacc807..94c41bcbf54 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message_in_dark_mode.png index 2b9a6285bf9..7469ac264ef 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_failed_message_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message.png index bcc11ea0ade..6019a6e5253 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message_in_dark_mode.png index 2b82e2adf06..e8a8b446331 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_my_message_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message.png index b4dd3f6739d..b195ab9e9a1 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message_in_dark_mode.png index d8d27d1a891..3670a371f45 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageActionsTest_their_message_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled.png index eb250948156..4284f87a317 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled_in_thread_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled_in_thread_mode.png index 06bde542b35..d60eaf782d8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled_in_thread_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_filled_in_thread_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder.png index 4c29c2630c6..fd29e578b09 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder_in_thread_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder_in_thread_mode.png index d056f48c45a..5f904669680 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder_in_thread_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_active_command_placeholder_in_thread_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments.png index 5a00e00b141..697d57ad482 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments_and_link.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments_and_link.png index 93cddc7dfd6..43e5ee43e49 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments_and_link.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_attachments_and_link.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit,_attachments,_and_link.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit,_attachments,_and_link.png index 1fc4fd0a118..03ba3e0729f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit,_attachments,_and_link.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit,_attachments,_and_link.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit.png index 9444eec01d6..8eaf3216dae 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit_empty.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit_empty.png index b817f89921f..5c9539bb4ed 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit_empty.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_edit_empty.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_filled.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_filled.png index eed50a08c67..dd3ed701f27 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_filled.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_filled.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_link.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_link.png index 0da54e1784e..0ff0b279ffa 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_link.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_link.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_overflow.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_overflow.png index 36e6ab82da1..d3d253a8013 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_overflow.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_overflow.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_placeholder.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_placeholder.png index c3092df14d1..a8d14d76d16 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_placeholder.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_placeholder.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply,_attachments,_and_link.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply,_attachments,_and_link.png index 0da04965ab1..8a829547fdc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply,_attachments,_and_link.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply,_attachments,_and_link.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply.png index 0354d17f4d1..30d76fab5f6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_reply.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_rtl_input_aligns_to_the_end.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_rtl_input_aligns_to_the_end.png index 02bc7c5854b..ab767eff4de 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_rtl_input_aligns_to_the_end.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_rtl_input_aligns_to_the_end.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_slow_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_slow_mode.png index a1ef9d8df93..e143235f01e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_slow_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_slow_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode.png index f598cc62a78..1f691ab37cb 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode_also_send_to_channel.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode_also_send_to_channel.png index 87cc4f2c57b..91f4bfe823a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode_also_send_to_channel.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerInputTest_thread_mode_also_send_to_channel.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style.png index cf69858a3bd..7e845a0561c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_command_suggestions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_command_suggestions.png index 46ccfae56a0..f19849bc11f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_command_suggestions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_command_suggestions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png index a549a811b21..a02a655bce9 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_visible_attachment_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_visible_attachment_picker.png index d3a3785143f..daf0dafbdb0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_visible_attachment_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_visible_attachment_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style.png index d6ba7409ca9..5d553450d43 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_dark_mode.png index e363fd657fa..9b71109b483 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_light_mode.png index fdd7d339912..08acd043c85 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_command_suggestions_in_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png index 0917c432d2c..38395ed754e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png index 9530e8126b6..9770d1ecf45 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_visible_attachment_picker.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_visible_attachment_picker.png index 827d4fa289f..9b32e2b62bf 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_visible_attachment_picker.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_visible_attachment_picker.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_slow_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_slow_mode.png index 4e653ec9c7b..3580ff5820e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_slow_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_slow_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_empty_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_empty_messages.png index b3fa31bc043..2178c0170c6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_empty_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_empty_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_bottom_aligned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_bottom_aligned_messages.png index 85a3a78f1a4..959f5f2eb87 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_bottom_aligned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_bottom_aligned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages.png index b5208d0533f..e773a985d14 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages_in_dark_mode.png index d8016df9c81..3841bd892a0 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_messages_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_top_aligned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_top_aligned_messages.png index acb6becd735..78a978928ed 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_top_aligned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loaded_top_aligned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_messages.png index 5f1d068090f..a60bbc3d281 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_older_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_older_messages.png index 3dceb5d4577..ca5b4dd5896 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_older_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_loading_older_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button.png index 4f441a066b9..8d6ba2b7c4a 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button_in_dark_mode.png index b73a9ddedc6..8a756f2ffbf 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button_in_dark_mode.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_bottom_button_in_dark_mode.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_first_unread_pill.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_first_unread_pill.png index 3d26e68afdf..bb0b3ac941f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_first_unread_pill.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_scroll_to_first_unread_pill.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_thread_separator.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_thread_separator.png index 15d662bc8e9..67ed2cc6728 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_thread_separator.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_thread_separator.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_unread_separator_visible.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_unread_separator_visible.png index fe659f49f58..dd86924afb3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_unread_separator_visible.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageListTest_unread_separator_visible.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageItemTest_pinnedMessageItem.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageItemTest_pinnedMessageItem.png index ba0818ba3ba..557b25af2a3 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageItemTest_pinnedMessageItem.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageItemTest_pinnedMessageItem.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_empty_pinned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_empty_pinned_messages.png index 227435487af..db4f7453448 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_empty_pinned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_empty_pinned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loaded_pinned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loaded_pinned_messages.png index 2bf363703b9..43dc3455790 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loaded_pinned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loaded_pinned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_more_pinned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_more_pinned_messages.png index f6ea74df088..03a7c415961 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_more_pinned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_more_pinned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_pinned_messages.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_pinned_messages.png index 5f1d068090f..a60bbc3d281 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_pinned_messages.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.pinned_PinnedMessageListTest_loading_pinned_messages.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadItemTest_threadItem.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadItemTest_threadItem.png index c3d098e75cd..f7b1668c55c 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadItemTest_threadItem.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadItemTest_threadItem.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_error_state.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_error_state.png index 3d8f4631177..45dbd6589cc 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_error_state.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_error_state.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_loading_state.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_loading_state.png index ff9fac7c531..4f9a6ef5f59 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_loading_state.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_loading_state.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_unread_threads.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_unread_threads.png index cc65b0ae90e..87a781fb272 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_unread_threads.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListBannerTest_unread_threads.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_no_user.png index 1e343121d79..758eb8a2e28 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_with_user.png index f3295d24431..af050f6aad4 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connected,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_no_user.png index dc1325d05cd..110859755d5 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_with_user.png index 415767f85b0..f5c37c4528f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_connecting,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_no_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_no_user.png index 0828fde66e5..493bb865c91 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_no_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_no_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_with_user.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_with_user.png index 27e03abd784..b78f22a0329 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_with_user.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListHeaderTest_offline,_with_user.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_empty_threads.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_empty_threads.png index a64a2926858..96d0d2772b6 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_empty_threads.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_empty_threads.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads.png index 281787dc72b..557b479e112 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads_with_unread_banner.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads_with_unread_banner.png index 42de8720899..e5f40611ea8 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads_with_unread_banner.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loaded_threads_with_unread_banner.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_more_threads.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_more_threads.png index 18ea9b2c41d..73b10ea9519 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_more_threads.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_more_threads.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_threads.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_threads.png index 8b9cb870297..8358bb1766e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_threads.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.threads_ThreadListTest_loading_threads.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_MessagePreviewIconFactoryTest_message_preview_icons.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_MessagePreviewIconFactoryTest_message_preview_icons.png index a7f1f6f9a4e..c9f8df8f72f 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_MessagePreviewIconFactoryTest_message_preview_icons.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_MessagePreviewIconFactoryTest_message_preview_icons.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_default.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_default.png index 10bebe1e65b..3ddc157d4df 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_default.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_default.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_error.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_error.png index 0a58dc28df4..1d298ff3869 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_error.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_error.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_loading.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_loading.png index e3ff0a8a0f7..53e0e86beef 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_loading.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_loading.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_success.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_success.png index 119f765e07a..b49ee115c4e 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_success.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_success.png differ diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_with_action.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_with_action.png index 1b022955ebe..2b67aa38235 100644 Binary files a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_with_action.png and b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.util_StreamSnackbarTest_snackbar_with_action.png differ diff --git a/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/MessageReminder.kt b/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/MessageReminder.kt index 847917e4fab..d3c0c31b5d3 100644 --- a/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/MessageReminder.kt +++ b/stream-chat-android-core/src/main/java/io/getstream/chat/android/models/MessageReminder.kt @@ -95,8 +95,10 @@ public data class MessageReminder( */ public constructor(reminder: MessageReminder) : this() { remindAt = reminder.remindAt - message = reminder.message + cid = reminder.cid channel = reminder.channel + messageId = reminder.messageId + message = reminder.message createdAt = reminder.createdAt updatedAt = reminder.updatedAt } diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/AttachmentTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/AttachmentTest.kt new file mode 100644 index 00000000000..976e17749db --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/AttachmentTest.kt @@ -0,0 +1,103 @@ +/* + * 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.models + +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomString +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test +import java.io.File + +internal class AttachmentTest { + + @Test + @Suppress("LongMethod") + fun `builder should set every field`() { + val expected = Attachment( + authorName = randomString(), + authorLink = randomString(), + titleLink = randomString(), + thumbUrl = randomString(), + imageUrl = randomString(), + assetUrl = randomString(), + ogUrl = randomString(), + mimeType = randomString(), + fileSize = randomInt(), + title = randomString(), + text = randomString(), + type = randomString(), + image = randomString(), + name = randomString(), + fallback = randomString(), + originalHeight = randomInt(), + originalWidth = randomInt(), + upload = File(randomString()), + uploadState = Attachment.UploadState.Success, + extraData = mapOf(randomString() to randomString()), + ) + + val built = Attachment.Builder() + .withAuthorName(expected.authorName) + .withAuthorLink(expected.authorLink) + .withTitleLink(expected.titleLink) + .withThumbUrl(expected.thumbUrl) + .withImageUrl(expected.imageUrl) + .withAssetUrl(expected.assetUrl) + .withOgUrl(expected.ogUrl) + .withMimeType(expected.mimeType) + .withFileSize(expected.fileSize) + .withTitle(expected.title) + .withText(expected.text) + .withType(expected.type) + .withImage(expected.image) + .withName(expected.name) + .withFallback(expected.fallback) + .withOriginalHeight(expected.originalHeight) + .withOriginalWidth(expected.originalWidth) + .withUpload(expected.upload) + .withUploadState(expected.uploadState) + .withExtraData(expected.extraData) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val attachment = randomAttachment() + + val built = Attachment.Builder(attachment).build() + + assertEquals(attachment, built) + } + + @Test + fun `toString should shorten long urls`() { + val attachment = Attachment(mimeType = "image/png", thumbUrl = "0123456789abcdef") + val string = attachment.toString() + assertTrue(string.contains("mimeType=\"image/png\"")) + assertTrue(string.contains("thumbUrl=0123456789...")) + } + + @Test + fun `toString should keep short urls`() { + val attachment = Attachment(thumbUrl = "short") + assertTrue(attachment.toString().contains("thumbUrl=short")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ChannelTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ChannelTest.kt new file mode 100644 index 00000000000..b1c47ce591f --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ChannelTest.kt @@ -0,0 +1,378 @@ +/* + * 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.models + +import io.getstream.chat.android.positiveRandomInt +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomChannel +import io.getstream.chat.android.randomChannelUserRead +import io.getstream.chat.android.randomConfig +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomDraftMessage +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomLocation +import io.getstream.chat.android.randomMember +import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomPendingMessage +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomSyncStatus +import io.getstream.chat.android.randomUser +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test +import java.util.Date + +internal class ChannelTest { + + @Test + @Suppress("DEPRECATION", "LongMethod") + fun `builder should set every field`() { + val expected = Channel( + id = randomString(), + type = randomString(), + name = randomString(), + image = randomString(), + watcherCount = randomInt(), + frozen = randomBoolean(), + createdAt = randomDate(), + deletedAt = randomDate(), + updatedAt = randomDate(), + syncStatus = randomSyncStatus(), + memberCount = randomInt(), + messages = listOf(randomMessage()), + members = listOf(randomMember()), + watchers = listOf(randomUser()), + read = listOf(randomChannelUserRead()), + config = randomConfig(), + createdBy = randomUser(), + unreadCount = randomInt(), + team = randomString(), + hidden = randomBoolean(), + hiddenMessagesBefore = randomDate(), + cooldown = randomInt(), + pinnedMessages = listOf(randomMessage()), + ownCapabilities = setOf(randomString()), + membership = randomMember(), + cachedLatestMessages = listOf(randomMessage()), + isInsideSearch = randomBoolean(), + draftMessage = randomDraftMessage(), + activeLiveLocations = listOf(randomLocation()), + messageCount = randomInt(), + pushPreference = PushPreference(level = PushPreferenceLevel.all, disabledUntil = randomDate()), + filterTags = listOf(randomString()), + lastMessageAt = randomDate(), + extraData = mapOf(randomString() to randomString()), + ) + + val built = Channel.Builder() + .withId(expected.id) + .withType(expected.type) + .withName(expected.name) + .withImage(expected.image) + .withWatcherCount(expected.watcherCount) + .withFrozen(expected.frozen) + .withCreatedAt(expected.createdAt) + .withDeletedAt(expected.deletedAt) + .withUpdatedAt(expected.updatedAt) + .withSyncStatus(expected.syncStatus) + .withMemberCount(expected.memberCount) + .withMessages(expected.messages) + .withMembers(expected.members) + .withWatchers(expected.watchers) + .withRead(expected.read) + .withConfig(expected.config) + .withCreatedBy(expected.createdBy) + .withUnreadCount(expected.unreadCount) + .withTeam(expected.team) + .withHidden(expected.hidden) + .withHiddenMessagesBefore(expected.hiddenMessagesBefore) + .withCooldown(expected.cooldown) + .withPinnedMessages(expected.pinnedMessages) + .withOwnCapabilities(expected.ownCapabilities) + .withMembership(expected.membership) + .withCachedLatestMessages(expected.cachedLatestMessages) + .withIsInsideSearch(expected.isInsideSearch) + .withDraftMessage(expected.draftMessage) + .withActiveLiveLocations(expected.activeLiveLocations) + .withMessageCount(expected.messageCount) + .withPushPreference(expected.pushPreference) + .withFilterTags(expected.filterTags) + .withLastMessageAt(expected.lastMessageAt) + .withExtraData(expected.extraData) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val channel = randomChannel(pendingMessages = emptyList()) + + val built = Channel.Builder(channel).build() + + assertEquals(channel, built) + } + + @Test + fun `builder copy constructor should not carry pendingMessages`() { + val channel = randomChannel(pendingMessages = listOf(randomPendingMessage())) + + val built = Channel.Builder(channel).build() + + assertEquals(emptyList(), built.pendingMessages) + assertEquals(channel.copy(pendingMessages = emptyList()), built) + } + + @Test + fun `cid should return empty string when id is empty`() { + val channel = randomChannel(id = "") + assertEquals("", channel.cid) + } + + @Test + fun `cid should return empty string when type is empty`() { + val channel = randomChannel(type = "") + assertEquals("", channel.cid) + } + + @Test + fun `cid should return formatted string when both id and type are present`() { + val channel = randomChannel(id = "123", type = "messaging") + assertEquals("messaging:123", channel.cid) + } + + @Test + fun `lastUpdated should return lastMessageAt when it is after createdAt`() { + val channel = randomChannel(createdAt = Date(1000), lastMessageAt = Date(2000)) + assertEquals(Date(2000), channel.lastUpdated) + } + + @Test + fun `lastUpdated should return createdAt when lastMessageAt is before createdAt`() { + val channel = randomChannel(createdAt = Date(2000), lastMessageAt = Date(1000)) + assertEquals(Date(2000), channel.lastUpdated) + } + + @Test + fun `lastUpdated should return createdAt when lastMessageAt is null`() { + val channel = randomChannel(createdAt = Date(1000), lastMessageAt = null) + assertEquals(Date(1000), channel.lastUpdated) + } + + @Test + fun `lastUpdated should return lastMessageAt when createdAt is null`() { + val channel = randomChannel(createdAt = null, lastMessageAt = Date(2000)) + assertEquals(Date(2000), channel.lastUpdated) + } + + @Test + @Suppress("DEPRECATION") + fun `hasUnread should reflect the unread count`() { + assertTrue(randomChannel(unreadCount = 1).hasUnread) + assertFalse(randomChannel(unreadCount = 0).hasUnread) + } + + @Test + fun `getComparableField should return string fields`() { + val channel = randomChannel() + assertEquals(channel.cid, channel.getComparableField("cid")) + assertEquals(channel.id, channel.getComparableField("id")) + assertEquals(channel.type, channel.getComparableField("type")) + assertEquals(channel.name, channel.getComparableField("name")) + assertEquals(channel.image, channel.getComparableField("image")) + assertEquals(channel.team, channel.getComparableField("team")) + } + + @Test + fun `getComparableField should return count fields for snake_case and camelCase field names`() { + val channel = randomChannel(watcherCount = 3, memberCount = 5, unreadCount = 7) + .copy(cooldown = 11) + assertEquals(3, channel.getComparableField("watcher_count")) + assertEquals(3, channel.getComparableField("watcherCount")) + assertEquals(5, channel.getComparableField("member_count")) + assertEquals(5, channel.getComparableField("memberCount")) + assertEquals(7, channel.getComparableField("unread_count")) + assertEquals(7, channel.getComparableField("unreadCount")) + assertEquals(true, channel.getComparableField("has_unread")) + assertEquals(true, channel.getComparableField("hasUnread")) + assertEquals(11, channel.getComparableField("cooldown")) + } + + @Test + fun `getComparableField should return boolean fields`() { + val channel = randomChannel(frozen = true, hidden = false) + assertEquals(true, channel.getComparableField("frozen")) + assertEquals(false, channel.getComparableField("hidden")) + } + + @Test + fun `getComparableField should return date fields for snake_case and camelCase field names`() { + val channel = randomChannel(lastMessageAt = randomDate()) + assertEquals(channel.lastMessageAt, channel.getComparableField("last_message_at")) + assertEquals(channel.lastMessageAt, channel.getComparableField("lastMessageAt")) + assertEquals(channel.createdAt, channel.getComparableField("created_at")) + assertEquals(channel.createdAt, channel.getComparableField("createdAt")) + assertEquals(channel.updatedAt, channel.getComparableField("updated_at")) + assertEquals(channel.updatedAt, channel.getComparableField("updatedAt")) + assertEquals(channel.deletedAt, channel.getComparableField("deleted_at")) + assertEquals(channel.deletedAt, channel.getComparableField("deletedAt")) + assertEquals(channel.lastUpdated, channel.getComparableField("last_updated")) + assertEquals(channel.lastUpdated, channel.getComparableField("lastUpdated")) + } + + @Test + fun `getComparableField should return membership dates for pinned_at and archived_at`() { + val pinnedAt = randomDate() + val archivedAt = randomDate() + val channel = randomChannel(membership = randomMember(pinnedAt = pinnedAt, archivedAt = archivedAt)) + assertEquals(pinnedAt, channel.getComparableField("pinned_at")) + assertEquals(pinnedAt, channel.getComparableField("pinnedAt")) + assertEquals(archivedAt, channel.getComparableField("archived_at")) + assertEquals(archivedAt, channel.getComparableField("archivedAt")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val channel = randomChannel(extraData = mapOf("customField" to "customValue")) + assertEquals("customValue", channel.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val channel = randomChannel(extraData = emptyMap()) + assertNull(channel.getComparableField("unknownField")) + } + + @Test + fun `mergeChannelFromEvent should update channel data fields`() { + val original = randomChannel( + hidden = false, + frozen = false, + syncStatus = SyncStatus.COMPLETED, + messageCount = null, + extraData = mapOf("key" to "original"), + ) + val update = randomChannel( + hidden = true, + frozen = true, + syncStatus = SyncStatus.SYNC_NEEDED, + messageCount = positiveRandomInt(), + members = listOf(randomMember()), + config = randomConfig(), + extraData = mapOf("key" to "updated"), + ) + + val merged = original.mergeChannelFromEvent(update) + + assertEquals(update.name, merged.name) + assertEquals(update.image, merged.image) + assertEquals(update.hidden, merged.hidden) + assertEquals(update.frozen, merged.frozen) + assertEquals(update.filterTags, merged.filterTags) + assertEquals(update.team, merged.team) + assertEquals(update.config, merged.config) + assertEquals(update.extraData, merged.extraData) + assertEquals(update.syncStatus, merged.syncStatus) + assertEquals(update.hiddenMessagesBefore, merged.hiddenMessagesBefore) + assertEquals(update.memberCount, merged.memberCount) + assertEquals(update.members, merged.members) + assertEquals(update.createdAt, merged.createdAt) + assertEquals(update.updatedAt, merged.updatedAt) + assertEquals(update.deletedAt, merged.deletedAt) + assertEquals(update.messageCount, merged.messageCount) + assertEquals(update.lastMessageAt, merged.lastMessageAt) + } + + @Test + fun `mergeChannelFromEvent should keep messageCount when the update has none`() { + val original = randomChannel(messageCount = 50) + val update = randomChannel(messageCount = null) + + val merged = original.mergeChannelFromEvent(update) + + assertEquals(50, merged.messageCount) + } + + @Test + @Suppress("DEPRECATION") + fun `mergeChannelFromEvent should not merge connection specific fields`() { + val original = randomChannel( + messages = listOf(randomMessage()), + watcherCount = 1, + watchers = listOf(randomUser()), + read = listOf(randomChannelUserRead()), + ownCapabilities = setOf("send-message"), + membership = randomMember(), + unreadCount = 5, + ) + val update = randomChannel( + messages = listOf(randomMessage()), + watcherCount = 2, + watchers = listOf(randomUser()), + read = listOf(randomChannelUserRead()), + ownCapabilities = setOf("delete-channel"), + membership = randomMember(), + unreadCount = 10, + ) + + val merged = original.mergeChannelFromEvent(update) + + assertEquals(original.messages, merged.messages) + assertEquals(original.watcherCount, merged.watcherCount) + assertEquals(original.watchers, merged.watchers) + assertEquals(original.read, merged.read) + assertEquals(original.ownCapabilities, merged.ownCapabilities) + assertEquals(original.membership, merged.membership) + assertEquals(original.unreadCount, merged.unreadCount) + } + + @Test + fun `toChannelData should map all channel data fields`() { + val channel = randomChannel( + draftMessage = randomDraftMessage(), + messageCount = positiveRandomInt(), + lastMessageAt = randomDate(), + ).copy( + pushPreference = PushPreference(level = PushPreferenceLevel.all, disabledUntil = randomDate()), + ) + + val channelData = channel.toChannelData() + + assertEquals(channel.type, channelData.type) + assertEquals(channel.id, channelData.id) + assertEquals(channel.name, channelData.name) + assertEquals(channel.image, channelData.image) + assertEquals(channel.filterTags, channelData.filterTags) + assertEquals(channel.frozen, channelData.frozen) + assertEquals(channel.cooldown, channelData.cooldown) + assertEquals(channel.createdAt, channelData.createdAt) + assertEquals(channel.updatedAt, channelData.updatedAt) + assertEquals(channel.deletedAt, channelData.deletedAt) + assertEquals(channel.memberCount, channelData.memberCount) + assertEquals(channel.extraData, channelData.extraData) + assertEquals(channel.createdBy, channelData.createdBy) + assertEquals(channel.team, channelData.team) + assertEquals(channel.ownCapabilities, channelData.ownCapabilities) + assertEquals(channel.membership, channelData.membership) + assertEquals(channel.draftMessage, channelData.draft) + assertEquals(channel.messageCount, channelData.messageCount) + assertEquals(channel.pushPreference, channelData.pushPreference) + assertEquals(channel.lastMessageAt, channelData.lastMessageAt) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/DraftMessageTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/DraftMessageTest.kt new file mode 100644 index 00000000000..5db2abf096e --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/DraftMessageTest.kt @@ -0,0 +1,128 @@ +/* + * 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.models + +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomCID +import io.getstream.chat.android.randomDraftMessage +import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomString +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test + +internal class DraftMessageTest { + + @Test + fun `builder should set every field`() { + val expected = DraftMessage( + id = randomString(), + cid = randomCID(), + text = randomString(), + parentId = randomString(), + attachments = listOf(randomAttachment()), + mentionedUsersIds = listOf(randomString()), + extraData = mapOf(randomString() to randomString()), + silent = randomBoolean(), + showInChannel = randomBoolean(), + replyMessage = randomMessage(), + command = randomString(), + args = randomString(), + ) + + val built = DraftMessage.Builder() + .withId(expected.id) + .withCid(expected.cid) + .withText(expected.text) + .withParentId(expected.parentId) + .withAttachments(expected.attachments) + .withMentionedUsersIds(expected.mentionedUsersIds) + .withExtraData(expected.extraData) + .withSilent(expected.silent) + .withShowInChannel(expected.showInChannel) + .withReplyMessage(expected.replyMessage) + .withCommand(expected.command) + .withArgs(expected.args) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val draft = randomDraftMessage( + attachments = listOf(randomAttachment()), + extraData = mapOf(randomString() to randomString()), + command = randomString(), + args = randomString(), + ) + + val built = DraftMessage.Builder(draft).build() + + assertEquals(draft, built) + } + + @Test + fun `identifierHash should be based on the message id when there is no parent`() { + val draft = randomDraftMessage(id = "draft1", parentId = null) + assertEquals("draft1".hashCode().toLong(), draft.identifierHash()) + } + + @Test + fun `identifierHash should change when the parent id changes`() { + val draft = randomDraftMessage(id = "draft1", parentId = null) + val threadReply1 = draft.copy(parentId = "parent1") + val threadReply2 = draft.copy(parentId = "parent2") + assertNotEquals(draft.identifierHash(), threadReply1.identifierHash()) + assertNotEquals(threadReply1.identifierHash(), threadReply2.identifierHash()) + } + + @Test + fun `getComparableField should return direct fields`() { + val draft = randomDraftMessage() + assertEquals(draft.id, draft.getComparableField("id")) + assertEquals(draft.cid, draft.getComparableField("cid")) + assertEquals(draft.text, draft.getComparableField("text")) + assertEquals(draft.parentId, draft.getComparableField("parent_id")) + assertEquals(draft.parentId, draft.getComparableField("parentId")) + assertEquals(draft.silent, draft.getComparableField("silent")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val draft = randomDraftMessage(extraData = mapOf("customField" to "customValue")) + assertEquals("customValue", draft.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val draft = randomDraftMessage(extraData = emptyMap()) + assertNull(draft.getComparableField("unknownField")) + } + + @Test + fun `toString should contain the core draft fields`() { + val draft = randomDraftMessage(id = "draft1", text = "Hello", command = "giphy") + val string = draft.toString() + assertTrue(string.contains("id=\"draft1\"")) + assertTrue(string.contains("text=\"Hello\"")) + assertTrue(string.contains("command=\"giphy\"")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MemberTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MemberTest.kt new file mode 100644 index 00000000000..ee556d05a2e --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MemberTest.kt @@ -0,0 +1,105 @@ +/* + * 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.models + +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomMember +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomUser +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class MemberTest { + + @Test + fun `getUserId should return the id of the member user`() { + val member = randomMember(user = randomUser(id = "user1")) + assertEquals("user1", member.getUserId()) + } + + @Test + fun `getComparableField should return the user id for snake_case and camelCase field names`() { + val member = randomMember(user = randomUser(id = "user1")) + assertEquals("user1", member.getComparableField("user_id")) + assertEquals("user1", member.getComparableField("userId")) + } + + @Test + fun `getComparableField should return date fields for snake_case and camelCase field names`() { + val member = randomMember( + createdAt = randomDate(), + updatedAt = randomDate(), + inviteAcceptedAt = randomDate(), + inviteRejectedAt = randomDate(), + banExpires = randomDate(), + pinnedAt = randomDate(), + archivedAt = randomDate(), + ) + assertEquals(member.createdAt, member.getComparableField("created_at")) + assertEquals(member.createdAt, member.getComparableField("createdAt")) + assertEquals(member.updatedAt, member.getComparableField("updated_at")) + assertEquals(member.updatedAt, member.getComparableField("updatedAt")) + assertEquals(member.inviteAcceptedAt, member.getComparableField("invite_accepted_at")) + assertEquals(member.inviteAcceptedAt, member.getComparableField("inviteAcceptedAt")) + assertEquals(member.inviteRejectedAt, member.getComparableField("invite_rejected_at")) + assertEquals(member.inviteRejectedAt, member.getComparableField("inviteRejectedAt")) + assertEquals(member.banExpires, member.getComparableField("ban_expires")) + assertEquals(member.banExpires, member.getComparableField("banExpires")) + assertEquals(member.pinnedAt, member.getComparableField("pinned_at")) + assertEquals(member.pinnedAt, member.getComparableField("pinnedAt")) + assertEquals(member.archivedAt, member.getComparableField("archived_at")) + assertEquals(member.archivedAt, member.getComparableField("archivedAt")) + } + + @Test + fun `getComparableField should return boolean fields`() { + val member = randomMember( + isInvited = randomBoolean(), + shadowBanned = randomBoolean(), + banned = randomBoolean(), + ).copy(notificationsMuted = randomBoolean()) + assertEquals(member.isInvited, member.getComparableField("is_invited")) + assertEquals(member.isInvited, member.getComparableField("isInvited")) + assertEquals(member.shadowBanned, member.getComparableField("shadow_banned")) + assertEquals(member.shadowBanned, member.getComparableField("shadowBanned")) + assertEquals(member.banned, member.getComparableField("banned")) + assertEquals(member.notificationsMuted, member.getComparableField("notifications_muted")) + assertEquals(member.notificationsMuted, member.getComparableField("notificationsMuted")) + } + + @Test + fun `getComparableField should return string fields`() { + val member = randomMember(channelRole = randomString()).copy(status = randomString()) + assertEquals(member.channelRole, member.getComparableField("channel_role")) + assertEquals(member.channelRole, member.getComparableField("channelRole")) + assertEquals(member.status, member.getComparableField("status")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val member = randomMember().copy(extraData = mapOf("customField" to "customValue")) + assertEquals("customValue", member.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val member = randomMember() + assertNull(member.getComparableField("unknownField")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageReminderTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageReminderTest.kt new file mode 100644 index 00000000000..23a87a7b17b --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageReminderTest.kt @@ -0,0 +1,73 @@ +/* + * 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.models + +import io.getstream.chat.android.randomChannel +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomMessageReminder +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class MessageReminderTest { + + @Test + fun `builder should set every field`() { + val channel = randomChannel() + val message = randomMessage() + val expected = randomMessageReminder(channel = channel, message = message) + + val built = MessageReminder.Builder() + .withRemindAt(expected.remindAt) + .withCid(expected.cid) + .withChannel(channel) + .withMessageId(expected.messageId) + .withMessage(message) + .withCreatedAt(expected.createdAt) + .withUpdatedAt(expected.updatedAt) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val reminder = randomMessageReminder() + + val built = MessageReminder.Builder(reminder).build() + + assertEquals(reminder, built) + } + + @Test + fun `getComparableField should return date fields for snake_case and camelCase field names`() { + val reminder = randomMessageReminder(remindAt = randomDate()) + assertEquals(reminder.remindAt, reminder.getComparableField("remind_at")) + assertEquals(reminder.remindAt, reminder.getComparableField("remindAt")) + assertEquals(reminder.createdAt, reminder.getComparableField("created_at")) + assertEquals(reminder.createdAt, reminder.getComparableField("createdAt")) + assertEquals(reminder.updatedAt, reminder.getComparableField("updated_at")) + assertEquals(reminder.updatedAt, reminder.getComparableField("updatedAt")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val reminder = randomMessageReminder() + assertNull(reminder.getComparableField("unknownField")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageTest.kt new file mode 100644 index 00000000000..bd241145320 --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/MessageTest.kt @@ -0,0 +1,292 @@ +/* + * 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.models + +import io.getstream.chat.android.randomAttachment +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomCID +import io.getstream.chat.android.randomChannelInfo +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomLocation +import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomMessageModerationDetails +import io.getstream.chat.android.randomMessageReminderInfo +import io.getstream.chat.android.randomModeration +import io.getstream.chat.android.randomPoll +import io.getstream.chat.android.randomReaction +import io.getstream.chat.android.randomReactionGroup +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomSyncStatus +import io.getstream.chat.android.randomUser +import io.getstream.chat.android.randomUserGroup +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotEquals +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test + +internal class MessageTest { + + @Test + @Suppress("LongMethod") + fun `builder should set every field`() { + val expected = Message( + id = randomString(), + cid = randomCID(), + text = randomString(), + html = randomString(), + parentId = randomString(), + command = randomString(), + attachments = listOf(randomAttachment()), + mentionedUsersIds = listOf(randomString()), + mentionedUsers = listOf(randomUser()), + replyCount = randomInt(), + deletedReplyCount = randomInt(), + reactionCounts = mapOf(randomString() to randomInt()), + reactionScores = mapOf(randomString() to randomInt()), + reactionGroups = mapOf(randomString() to randomReactionGroup()), + syncStatus = randomSyncStatus(), + type = randomString(), + latestReactions = listOf(randomReaction()), + ownReactions = listOf(randomReaction()), + createdAt = randomDate(), + updatedAt = randomDate(), + deletedAt = randomDate(), + updatedLocallyAt = randomDate(), + createdLocallyAt = randomDate(), + user = randomUser(), + extraData = mapOf(randomString() to randomString()), + silent = randomBoolean(), + shadowed = randomBoolean(), + i18n = mapOf(randomString() to randomString()), + showInChannel = randomBoolean(), + channelInfo = randomChannelInfo(), + replyTo = randomMessage(), + replyMessageId = randomString(), + pinned = randomBoolean(), + pinnedAt = randomDate(), + pinExpires = randomDate(), + pinnedBy = randomUser(), + threadParticipants = listOf(randomUser()), + skipPushNotification = randomBoolean(), + skipEnrichUrl = randomBoolean(), + moderationDetails = randomMessageModerationDetails(), + moderation = randomModeration(), + messageTextUpdatedAt = randomDate(), + poll = randomPoll(), + restrictedVisibility = listOf(randomString()), + reminder = randomMessageReminderInfo(), + sharedLocation = randomLocation(), + channelRole = randomString(), + deletedForMe = randomBoolean(), + mentionedHere = randomBoolean(), + mentionedChannel = randomBoolean(), + mentionedGroups = listOf(randomUserGroup()), + mentionedRoles = listOf(randomString()), + ) + + val built = Message.Builder() + .withId(expected.id) + .withCid(expected.cid) + .withText(expected.text) + .withHtml(expected.html) + .withParentId(expected.parentId) + .withCommand(expected.command) + .withAttachments(expected.attachments) + .withMentionedUsersIds(expected.mentionedUsersIds) + .withMentionedUsers(expected.mentionedUsers) + .withReplyCount(expected.replyCount) + .withDeletedReplyCount(expected.deletedReplyCount) + .withReactionCounts(expected.reactionCounts) + .withReactionScores(expected.reactionScores) + .withReactionGroups(expected.reactionGroups) + .withSyncStatus(expected.syncStatus) + .withType(expected.type) + .withLatestReactions(expected.latestReactions) + .withOwnReactions(expected.ownReactions) + .withCreatedAt(expected.createdAt) + .withUpdatedAt(expected.updatedAt) + .withDeletedAt(expected.deletedAt) + .withUpdatedLocallyAt(expected.updatedLocallyAt) + .withCreatedLocallyAt(expected.createdLocallyAt) + .withUser(expected.user) + .withExtraData(expected.extraData) + .withSilent(expected.silent) + .withShadowed(expected.shadowed) + .withI18n(expected.i18n) + .withShowInChannel(expected.showInChannel) + .withChannelInfo(expected.channelInfo) + .withReplyTo(expected.replyTo) + .withReplyMessageId(expected.replyMessageId) + .withPinned(expected.pinned) + .withPinnedAt(expected.pinnedAt) + .withPinExpires(expected.pinExpires) + .withPinnedBy(expected.pinnedBy) + .withThreadParticipants(expected.threadParticipants) + .withSkipPushNotification(expected.skipPushNotification) + .withSkipEnrichUrl(expected.skipEnrichUrl) + .withModerationDetails(requireNotNull(expected.moderationDetails)) + .withModeration(requireNotNull(expected.moderation)) + .withMessageTextUpdatedAt(expected.messageTextUpdatedAt) + .withPoll(expected.poll) + .withRestrictedVisibility(expected.restrictedVisibility) + .withReminder(expected.reminder) + .withSharedLocation(expected.sharedLocation) + .withChannelRole(expected.channelRole) + .withDeletedForMe(expected.deletedForMe) + .withMentionedHere(expected.mentionedHere) + .withMentionedChannel(expected.mentionedChannel) + .withMentionedGroups(expected.mentionedGroups) + .withMentionedRoles(expected.mentionedRoles) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val message = randomMessage( + replyTo = randomMessage(), + poll = randomPoll(), + moderationDetails = randomMessageModerationDetails(), + moderation = randomModeration(), + channelRole = randomString(), + threadParticipants = listOf(randomUser()), + mentionedGroups = listOf(randomUserGroup()), + mentionedRoles = listOf(randomString()), + ) + + val built = Message.Builder(message).build() + + assertEquals(message, built) + } + + @Test + fun `getComparableField should return string fields`() { + val message = randomMessage() + assertEquals(message.id, message.getComparableField("id")) + assertEquals(message.cid, message.getComparableField("cid")) + assertEquals(message.text, message.getComparableField("text")) + assertEquals(message.html, message.getComparableField("html")) + assertEquals(message.command, message.getComparableField("command")) + assertEquals(message.type, message.getComparableField("type")) + } + + @Test + fun `getComparableField should return parentId for snake_case and camelCase field names`() { + val message = randomMessage() + assertEquals(message.parentId, message.getComparableField("parent_id")) + assertEquals(message.parentId, message.getComparableField("parentId")) + } + + @Test + fun `getComparableField should return count fields for snake_case and camelCase field names`() { + val message = randomMessage() + assertEquals(message.replyCount, message.getComparableField("reply_count")) + assertEquals(message.replyCount, message.getComparableField("replyCount")) + assertEquals(message.deletedReplyCount, message.getComparableField("deleted_reply_count")) + assertEquals(message.deletedReplyCount, message.getComparableField("deletedReplyCount")) + } + + @Test + fun `getComparableField should return date fields for snake_case and camelCase field names`() { + val message = randomMessage(deletedAt = randomDate()) + assertEquals(message.createdAt, message.getComparableField("created_at")) + assertEquals(message.createdAt, message.getComparableField("createdAt")) + assertEquals(message.updatedAt, message.getComparableField("updated_at")) + assertEquals(message.updatedAt, message.getComparableField("updatedAt")) + assertEquals(message.deletedAt, message.getComparableField("deleted_at")) + assertEquals(message.deletedAt, message.getComparableField("deletedAt")) + assertEquals(message.updatedLocallyAt, message.getComparableField("updated_locally_at")) + assertEquals(message.updatedLocallyAt, message.getComparableField("updatedLocallyAt")) + assertEquals(message.createdLocallyAt, message.getComparableField("created_locally_at")) + assertEquals(message.createdLocallyAt, message.getComparableField("createdLocallyAt")) + assertEquals(message.pinnedAt, message.getComparableField("pinned_at")) + assertEquals(message.pinnedAt, message.getComparableField("pinnedAt")) + assertEquals(message.pinExpires, message.getComparableField("pin_expires")) + assertEquals(message.pinExpires, message.getComparableField("pinExpires")) + } + + @Test + fun `getComparableField should return boolean fields`() { + val message = randomMessage() + assertEquals(message.silent, message.getComparableField("silent")) + assertEquals(message.shadowed, message.getComparableField("shadowed")) + assertEquals(message.pinned, message.getComparableField("pinned")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val message = randomMessage(extraData = mapOf("customField" to "customValue")) + assertEquals("customValue", message.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val message = randomMessage(extraData = emptyMap()) + assertNull(message.getComparableField("unknownField")) + } + + @Test + fun `getTranslation should return the translated text for the given language`() { + val message = randomMessage(i18n = mapOf("fr_text" to "Bonjour")) + assertEquals("Bonjour", message.getTranslation("fr")) + } + + @Test + fun `getTranslation should return empty string when the translation is missing`() { + val message = randomMessage(i18n = emptyMap()) + assertEquals("", message.getTranslation("fr")) + } + + @Test + fun `originalLanguage should return the language entry from i18n`() { + val message = randomMessage(i18n = mapOf("language" to "en")) + assertEquals("en", message.originalLanguage) + } + + @Test + fun `originalLanguage should return empty string when i18n has no language entry`() { + val message = randomMessage(i18n = emptyMap()) + assertEquals("", message.originalLanguage) + } + + @Test + fun `identifierHash should be based on the message id when there is no quoted message`() { + val message = randomMessage(id = "message1", replyTo = null) + assertEquals("message1".hashCode().toLong(), message.identifierHash()) + } + + @Test + fun `identifierHash should change when the quoted message id changes`() { + val message = randomMessage(id = "message1", replyTo = null) + val quotingReply1 = message.copy(replyTo = randomMessage(id = "reply1")) + val quotingReply2 = message.copy(replyTo = randomMessage(id = "reply2")) + assertNotEquals(message.identifierHash(), quotingReply1.identifierHash()) + assertNotEquals(quotingReply1.identifierHash(), quotingReply2.identifierHash()) + } + + @Test + fun `toString should contain the core message fields`() { + val message = randomMessage(id = "message1", text = "Hello", type = "regular") + val string = message.toString() + assertTrue(string.contains("id=\"message1\"")) + assertTrue(string.contains("text=\"Hello\"")) + assertTrue(string.contains("type=\"regular\"")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionGroupTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionGroupTest.kt new file mode 100644 index 00000000000..e5d98ab6f9a --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionGroupTest.kt @@ -0,0 +1,48 @@ +/* + * 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.models + +import io.getstream.chat.android.randomReactionGroup +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +internal class ReactionGroupTest { + + @Test + fun `builder should set every field`() { + val expected = randomReactionGroup() + + val built = ReactionGroup.Builder() + .type(expected.type) + .count(expected.count) + .sumScore(expected.sumScore) + .firstReactionAt(expected.firstReactionAt) + .lastReactionAt(expected.lastReactionAt) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val reactionGroup = randomReactionGroup() + + val built = ReactionGroup.Builder(reactionGroup).build() + + assertEquals(reactionGroup, built) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionTest.kt new file mode 100644 index 00000000000..068236378ec --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/ReactionTest.kt @@ -0,0 +1,132 @@ +/* + * 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.models + +import io.getstream.chat.android.randomBoolean +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomReaction +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomSyncStatus +import io.getstream.chat.android.randomUser +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Test + +internal class ReactionTest { + + @Test + fun `builder should set every field`() { + val expected = Reaction( + messageId = randomString(), + type = randomString(), + score = randomInt(), + user = randomUser(), + userId = randomString(), + createdAt = randomDate(), + createdLocallyAt = randomDate(), + updatedAt = randomDate(), + deletedAt = randomDate(), + syncStatus = randomSyncStatus(), + extraData = mapOf(randomString() to randomString()), + enforceUnique = randomBoolean(), + emojiCode = randomString(), + ) + + val built = Reaction.Builder() + .withMessageId(expected.messageId) + .withType(expected.type) + .withScore(expected.score) + .withUser(expected.user) + .withUserId(expected.userId) + .withCreatedAt(expected.createdAt) + .withCreatedLocallyAt(expected.createdLocallyAt) + .withUpdatedAt(expected.updatedAt) + .withDeletedAt(expected.deletedAt) + .withSyncStatus(expected.syncStatus) + .withExtraData(expected.extraData) + .withEnforceUnique(expected.enforceUnique) + .withEmojiCode(expected.emojiCode) + .build() + + assertEquals(expected, built) + } + + @Test + fun `messageId setter should behave like withMessageId`() { + val messageId = randomString() + val built = Reaction.Builder().messageId(messageId).build() + assertEquals(messageId, built.messageId) + } + + @Test + fun `builder copy constructor should copy every field`() { + val reaction = randomReaction().copy(createdLocallyAt = randomDate()) + + val built = Reaction.Builder(reaction).build() + + assertEquals(reaction, built) + } + + @Test + fun `builder copy constructor should not carry skipPush`() { + val reaction = randomReaction().copy(skipPush = true) + + val built = Reaction.Builder(reaction).build() + + assertFalse(built.skipPush) + assertEquals(reaction.copy(skipPush = false), built) + } + + @Test + fun `id should concatenate messageId, type, score and user id`() { + val reaction = Reaction(messageId = "m1", type = "like", score = 2, user = randomUser(id = "u1")) + assertEquals("m1like2u1", reaction.id) + } + + @Test + fun `fetchUserId should return the user id when user is set`() { + val reaction = randomReaction(user = randomUser(id = "user1"), userId = "other") + assertEquals("user1", reaction.fetchUserId()) + } + + @Test + fun `fetchUserId should return userId when user is null`() { + val reaction = randomReaction(user = null, userId = "user2") + assertEquals("user2", reaction.fetchUserId()) + } + + @Test + fun `getComparableField should return createdAt for snake_case and camelCase field names`() { + val reaction = randomReaction(createdAt = randomDate()) + assertEquals(reaction.createdAt, reaction.getComparableField("created_at")) + assertEquals(reaction.createdAt, reaction.getComparableField("createdAt")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val reaction = randomReaction(extraData = mutableMapOf("customField" to "customValue")) + assertEquals("customValue", reaction.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val reaction = randomReaction(extraData = mutableMapOf()) + assertNull(reaction.getComparableField("unknownField")) + } +} diff --git a/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/UserTest.kt b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/UserTest.kt new file mode 100644 index 00000000000..efd858430b6 --- /dev/null +++ b/stream-chat-android-core/src/test/java/io/getstream/chat/android/models/UserTest.kt @@ -0,0 +1,243 @@ +/* + * 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.models + +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.randomBoolean +import io.getstream.chat.android.randomChannelMute +import io.getstream.chat.android.randomDate +import io.getstream.chat.android.randomDevice +import io.getstream.chat.android.randomInt +import io.getstream.chat.android.randomLong +import io.getstream.chat.android.randomMute +import io.getstream.chat.android.randomPrivacySettings +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomUser +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test + +internal class UserTest { + + @Test + @Suppress("LongMethod") + fun `builder should set every field`() { + val expected = User( + id = randomString(), + role = randomString(), + name = randomString(), + image = randomString(), + invisible = randomBoolean(), + privacySettings = randomPrivacySettings(), + language = randomString(), + banned = randomBoolean(), + devices = listOf(randomDevice()), + online = randomBoolean(), + createdAt = randomDate(), + updatedAt = randomDate(), + lastActive = randomDate(), + totalUnreadCount = randomInt(), + unreadChannels = randomInt(), + unreadThreads = randomInt(), + mutes = listOf(randomMute()), + teams = listOf(randomString()), + teamsRole = mapOf(randomString() to randomString()), + channelMutes = listOf(randomChannelMute()), + blockedUserIds = listOf(randomString()), + avgResponseTime = randomLong(), + pushPreference = PushPreference(level = PushPreferenceLevel.all, disabledUntil = randomDate()), + extraData = mapOf(randomString() to randomString()), + deactivatedAt = randomDate(), + ) + + val built = User.Builder() + .withId(expected.id) + .withRole(expected.role) + .withName(expected.name) + .withImage(expected.image) + .withInvisible(expected.invisible) + .withPrivacySettings(expected.privacySettings) + .withLanguage(expected.language) + .withBanned(expected.banned) + .withDevices(expected.devices) + .withOnline(expected.online) + .withCreatedAt(expected.createdAt) + .withUpdatedAt(expected.updatedAt) + .withLastActive(expected.lastActive) + .withTotalUnreadCount(expected.totalUnreadCount) + .withUnreadChannels(expected.unreadChannels) + .withUnreadThreads(expected.unreadThreads) + .withMutes(expected.mutes) + .withTeams(expected.teams) + .withTeamsRole(expected.teamsRole) + .withChannelMutes(expected.channelMutes) + .withBlockedUserIds(expected.blockedUserIds) + .withAvgResponseTime(requireNotNull(expected.avgResponseTime)) + .withPushPreference(expected.pushPreference) + .withExtraData(expected.extraData) + .withDeactivatedAt(expected.deactivatedAt) + .build() + + assertEquals(expected, built) + } + + @Test + fun `builder copy constructor should copy every field`() { + val user = randomUser( + privacySettings = randomPrivacySettings(), + devices = listOf(randomDevice()), + mutes = listOf(randomMute()), + channelMutes = listOf(randomChannelMute()), + blockedUserIds = listOf(randomString()), + ).copy( + unreadThreads = randomInt(), + avgResponseTime = randomLong(), + pushPreference = PushPreference(level = PushPreferenceLevel.all, disabledUntil = randomDate()), + ) + + val built = User.Builder(user).build() + + assertEquals(user, built) + } + + @Test + fun `isBanned should be true only when banned is true`() { + assertTrue(randomUser(banned = true).isBanned) + assertFalse(randomUser(banned = false).isBanned) + assertFalse(randomUser().copy(banned = null).isBanned) + } + + @Test + fun `isInvisible should be true only when invisible is true`() { + assertTrue(randomUser(invisible = true).isInvisible) + assertFalse(randomUser(invisible = false).isInvisible) + assertFalse(randomUser().copy(invisible = null).isInvisible) + } + + @Test + fun `isTypingIndicatorsEnabled should default to true when no settings are present`() { + assertTrue(randomUser(privacySettings = null).isTypingIndicatorsEnabled) + assertTrue(randomUser(privacySettings = PrivacySettings(typingIndicators = null)).isTypingIndicatorsEnabled) + } + + @Test + fun `isTypingIndicatorsEnabled should reflect the typing indicators setting`() { + val enabled = PrivacySettings(typingIndicators = TypingIndicators(enabled = true)) + val disabled = PrivacySettings(typingIndicators = TypingIndicators(enabled = false)) + assertTrue(randomUser(privacySettings = enabled).isTypingIndicatorsEnabled) + assertFalse(randomUser(privacySettings = disabled).isTypingIndicatorsEnabled) + } + + @Test + fun `isReadReceiptsEnabled should default to true when no settings are present`() { + assertTrue(randomUser(privacySettings = null).isReadReceiptsEnabled) + assertTrue(randomUser(privacySettings = PrivacySettings(readReceipts = null)).isReadReceiptsEnabled) + } + + @Test + fun `isReadReceiptsEnabled should reflect the read receipts setting`() { + val enabled = PrivacySettings(readReceipts = ReadReceipts(enabled = true)) + val disabled = PrivacySettings(readReceipts = ReadReceipts(enabled = false)) + assertTrue(randomUser(privacySettings = enabled).isReadReceiptsEnabled) + assertFalse(randomUser(privacySettings = disabled).isReadReceiptsEnabled) + } + + @Test + fun `isDeliveryReceiptsEnabled should default to true when no settings are present`() { + assertTrue(randomUser(privacySettings = null).isDeliveryReceiptsEnabled) + assertTrue(randomUser(privacySettings = PrivacySettings(deliveryReceipts = null)).isDeliveryReceiptsEnabled) + } + + @Test + fun `isDeliveryReceiptsEnabled should reflect the delivery receipts setting`() { + val enabled = PrivacySettings(deliveryReceipts = DeliveryReceipts(enabled = true)) + val disabled = PrivacySettings(deliveryReceipts = DeliveryReceipts(enabled = false)) + assertTrue(randomUser(privacySettings = enabled).isDeliveryReceiptsEnabled) + assertFalse(randomUser(privacySettings = disabled).isDeliveryReceiptsEnabled) + } + + @Test + fun `getComparableField should return string fields`() { + val user = randomUser() + assertEquals(user.id, user.getComparableField("id")) + assertEquals(user.role, user.getComparableField("role")) + assertEquals(user.name, user.getComparableField("name")) + assertEquals(user.image, user.getComparableField("image")) + assertEquals(user.language, user.getComparableField("language")) + } + + @Test + fun `getComparableField should return boolean fields`() { + val user = randomUser() + assertEquals(user.invisible, user.getComparableField("invisible")) + assertEquals(user.banned, user.getComparableField("banned")) + assertEquals(user.online, user.getComparableField("online")) + } + + @Test + fun `getComparableField should return count fields for snake_case and camelCase field names`() { + val user = randomUser().copy(unreadThreads = randomInt()) + assertEquals(user.totalUnreadCount, user.getComparableField("total_unread_count")) + assertEquals(user.totalUnreadCount, user.getComparableField("totalUnreadCount")) + assertEquals(user.unreadChannels, user.getComparableField("unread_channels")) + assertEquals(user.unreadChannels, user.getComparableField("unreadChannels")) + assertEquals(user.unreadThreads, user.getComparableField("unread_threads")) + assertEquals(user.unreadThreads, user.getComparableField("unreadThreads")) + } + + @Test + fun `getComparableField should return date fields for snake_case and camelCase field names`() { + val user = randomUser( + createdAt = randomDate(), + deactivatedAt = randomDate(), + updatedAt = randomDate(), + lastActive = randomDate(), + ) + assertEquals(user.createdAt, user.getComparableField("created_at")) + assertEquals(user.createdAt, user.getComparableField("createdAt")) + assertEquals(user.deactivatedAt, user.getComparableField("deactivated_at")) + assertEquals(user.deactivatedAt, user.getComparableField("deactivatedAt")) + assertEquals(user.updatedAt, user.getComparableField("updated_at")) + assertEquals(user.updatedAt, user.getComparableField("updatedAt")) + assertEquals(user.lastActive, user.getComparableField("last_active")) + assertEquals(user.lastActive, user.getComparableField("lastActive")) + } + + @Test + fun `getComparableField should return avgResponseTime for snake_case and camelCase field names`() { + val user = randomUser().copy(avgResponseTime = randomLong()) + assertEquals(user.avgResponseTime, user.getComparableField("avg_response_time")) + assertEquals(user.avgResponseTime, user.getComparableField("avgResponseTime")) + } + + @Test + fun `getComparableField should return extraData value for custom field`() { + val user = randomUser(extraData = mutableMapOf("customField" to "customValue")) + assertEquals("customValue", user.getComparableField("customField")) + } + + @Test + fun `getComparableField should return null for unknown field`() { + val user = randomUser(extraData = mutableMapOf()) + assertNull(user.getComparableField("unknownField")) + } +} diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/CompatUserLookupHandlerTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/CompatUserLookupHandlerTest.kt new file mode 100644 index 00000000000..7d2e5ad9f81 --- /dev/null +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/CompatUserLookupHandlerTest.kt @@ -0,0 +1,101 @@ +/* + * 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.ui.common.feature.messages.composer.mention + +import io.getstream.chat.android.models.User +import io.getstream.chat.android.randomString +import io.getstream.chat.android.randomUser +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +@OptIn(ExperimentalCoroutinesApi::class) +internal class CompatUserLookupHandlerTest { + + @Test + fun `toUserLookupHandler delivers users from the compat callback`() = runTest { + val query = randomString() + val users = listOf(randomUser(), randomUser()) + var receivedQuery: String? = null + val compatHandler = CompatUserLookupHandler { compatQuery, callback -> + receivedQuery = compatQuery + callback(users) + return@CompatUserLookupHandler {} + } + + val result = compatHandler.toUserLookupHandler().handleUserLookup(query) + + assertEquals(query, receivedQuery) + assertEquals(users, result) + } + + @Test + fun `toUserLookupHandler suspends until the compat callback is invoked`() = runTest { + val users = listOf(randomUser()) + val compatHandler = CompatUserLookupHandler { _, callback -> + val deliveryJob = launch { + delay(100) + callback(users) + } + return@CompatUserLookupHandler { deliveryJob.cancel() } + } + + val result = compatHandler.toUserLookupHandler().handleUserLookup(randomString()) + + assertEquals(users, result) + } + + @Test + fun `toUserLookupHandler invokes the cancel function when the lookup is cancelled`() = runTest { + var cancelCount = 0 + val compatHandler = CompatUserLookupHandler { _, _ -> + return@CompatUserLookupHandler { cancelCount++ } + } + + val lookupJob = launch { + compatHandler.toUserLookupHandler().handleUserLookup(randomString()) + } + runCurrent() + lookupJob.cancel() + runCurrent() + + assertEquals(1, cancelCount) + } + + @Test + fun `toJavaCompatUserLookupHandler delivers users to the callback`() { + val query = randomString() + val users = listOf(randomUser(), randomUser()) + var receivedQuery: String? = null + val handler = UserLookupHandler { lookupQuery -> + receivedQuery = lookupQuery + users + } + + var receivedUsers: List? = null + val cancel = handler.toJavaCompatUserLookupHandler().handleCompatUserLookup(query) { receivedUsers = it } + + assertEquals(query, receivedQuery) + assertEquals(users, receivedUsers) + // The returned cancel function is a no-op and must not throw. + cancel() + } +} diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/list/AudioPlayerControllerTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/list/AudioPlayerControllerTest.kt new file mode 100644 index 00000000000..54e6e36b5eb --- /dev/null +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/list/AudioPlayerControllerTest.kt @@ -0,0 +1,454 @@ +/* + * 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.ui.common.feature.messages.list + +import io.getstream.chat.android.client.audio.AudioPlayer +import io.getstream.chat.android.client.audio.AudioState +import io.getstream.chat.android.client.audio.ProgressData +import io.getstream.chat.android.client.audio.audioHash +import io.getstream.chat.android.client.extensions.EXTRA_DURATION +import io.getstream.chat.android.client.extensions.EXTRA_WAVEFORM_DATA +import io.getstream.chat.android.models.Attachment +import io.getstream.chat.android.models.AttachmentType +import io.getstream.chat.android.randomAttachment +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever + +internal class AudioPlayerControllerTest { + + private lateinit var audioPlayer: AudioPlayer + private lateinit var controller: AudioPlayerController + + @BeforeEach + fun setUp() { + audioPlayer = mock { + on { currentState } doReturn AudioState.IDLE + on { currentPlayingId } doReturn NO_ID + } + controller = AudioPlayerController(audioPlayer) { RECORDING_URI } + } + + @Test + fun `play rejects attachment which is not an audio recording`() { + controller.play(randomAttachment(type = AttachmentType.IMAGE)) + + verify(audioPlayer, never()).play(any(), any()) + assertEquals(NO_ID, controller.state.value.current.playingId) + } + + @Test + fun `play rejects attachment without recording uri`() { + val controller = AudioPlayerController(audioPlayer) { null } + + controller.play(audioRecordingAttachment()) + + verify(audioPlayer, never()).play(any(), any()) + assertEquals(NO_ID, controller.state.value.current.playingId) + } + + @Test + fun `play starts playback and exposes track metadata`() { + val attachment = audioRecordingAttachment() + + controller.play(attachment) + + verify(audioPlayer).play(RECORDING_URI, attachment.audioHash) + val current = controller.state.value.current + assertEquals(attachment.audioHash, current.playingId) + assertEquals(RECORDING_URI, current.audioUri) + assertEquals(WAVEFORM, current.waveform) + assertEquals(DURATION_IN_MS, current.durationInMs) + assertEquals(0, current.playbackInMs) + } + + @Test + fun `play reflects the loading state of the audio player`() { + whenever(audioPlayer.currentState) doReturn AudioState.LOADING + + controller.play(audioRecordingAttachment()) + + assertTrue(controller.state.value.current.isLoading) + assertFalse(controller.state.value.current.isPlaying) + } + + @Test + fun `play resumes from the stored seek position`() { + val attachment = audioRecordingAttachment() + controller.seekTo(attachment, progress = 0.5f) + + controller.play(attachment) + + verify(audioPlayer, times(2)).seekTo(HALF_DURATION_IN_MS, attachment.audioHash) + val current = controller.state.value.current + assertEquals(HALF_DURATION_IN_MS, current.playbackInMs) + assertEquals(0.5f, current.playingProgress) + } + + @Test + fun `audio state changes from the player update the playing flags`() { + val listeners = playAndCaptureListeners(audioRecordingAttachment()) + + listeners.onAudioState(AudioState.PLAYING) + assertTrue(controller.state.value.current.isPlaying) + + listeners.onAudioState(AudioState.PAUSE) + assertFalse(controller.state.value.current.isPlaying) + } + + @Test + fun `progress updates from the player update the playback position`() { + val listeners = playAndCaptureListeners(audioRecordingAttachment()) + + listeners.onProgress( + ProgressData(currentPosition = 2500, progress = 0.25f, duration = DURATION_IN_MS), + ) + + val current = controller.state.value.current + assertTrue(current.isPlaying) + assertEquals(0.25f, current.playingProgress) + assertEquals(2500, current.playbackInMs) + assertEquals(DURATION_IN_MS, current.durationInMs) + } + + @Test + fun `progress updates from the player clear the stored seek position`() { + val attachment = audioRecordingAttachment() + controller.seekTo(attachment, progress = 0.5f) + val listeners = playAndCaptureListeners(attachment) + + listeners.onProgress( + ProgressData(currentPosition = 6000, progress = 0.6f, duration = DURATION_IN_MS), + ) + + assertFalse(attachment.audioHash in controller.state.value.seekTo) + } + + @Test + fun `speed changes from the player update the playing speed`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + + listeners.onSpeed(1.5f) + + assertEquals(1.5f, controller.state.value.current.playingSpeed) + assertEquals(1.5f, controller.state.value.speeds.getOrDefault(attachment.audioHash, 0f)) + } + + @Test + fun `player callbacks are ignored after reset`() { + val listeners = playAndCaptureListeners(audioRecordingAttachment()) + controller.reset() + + listeners.onAudioState(AudioState.PLAYING) + listeners.onProgress( + ProgressData(currentPosition = 2500, progress = 0.25f, duration = DURATION_IN_MS), + ) + listeners.onSpeed(1.5f) + + val current = controller.state.value.current + assertEquals(NO_ID, current.playingId) + assertFalse(current.isPlaying) + assertEquals(1.0f, current.playingSpeed) + } + + @Test + fun `togglePlayback rejects attachment which is not an audio recording`() { + controller.togglePlayback(randomAttachment(type = AttachmentType.IMAGE)) + + verify(audioPlayer, never()).play(any(), any()) + verify(audioPlayer, never()).pause() + } + + @Test + fun `togglePlayback starts playback when there is no prior progress`() { + val attachment = audioRecordingAttachment() + + controller.togglePlayback(attachment) + + verify(audioPlayer).play(RECORDING_URI, attachment.audioHash) + } + + @Test + fun `togglePlayback pauses the current playing track`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + listeners.onProgress( + ProgressData(currentPosition = HALF_DURATION_IN_MS, progress = 0.5f, duration = DURATION_IN_MS), + ) + whenever(audioPlayer.currentPlayingId) doReturn attachment.audioHash + + controller.togglePlayback(attachment) + + verify(audioPlayer).pause() + } + + @Test + fun `togglePlayback resumes the current paused track`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + listeners.onProgress( + ProgressData(currentPosition = HALF_DURATION_IN_MS, progress = 0.5f, duration = DURATION_IN_MS), + ) + listeners.onAudioState(AudioState.PAUSE) + whenever(audioPlayer.currentPlayingId) doReturn attachment.audioHash + whenever(audioPlayer.currentState) doReturn AudioState.PAUSE + + controller.togglePlayback(attachment) + + verify(audioPlayer).resume(attachment.audioHash) + } + + @Test + fun `togglePlayback restarts a partially played track when another audio is loaded`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + listeners.onProgress( + ProgressData(currentPosition = HALF_DURATION_IN_MS, progress = 0.5f, duration = DURATION_IN_MS), + ) + whenever(audioPlayer.currentPlayingId) doReturn attachment.audioHash + 1 + + controller.togglePlayback(attachment) + + verify(audioPlayer, times(2)).play(RECORDING_URI, attachment.audioHash) + verify(audioPlayer).seekTo(HALF_DURATION_IN_MS, attachment.audioHash) + assertEquals(HALF_DURATION_IN_MS, controller.state.value.current.playbackInMs) + } + + @Test + fun `changeSpeed rejects attachment which is not an audio recording`() { + controller.changeSpeed(randomAttachment(type = AttachmentType.IMAGE)) + + verify(audioPlayer, never()).changeSpeed(any()) + } + + @Test + fun `changeSpeed updates the speed of the current track`() { + val attachment = audioRecordingAttachment() + whenever(audioPlayer.changeSpeed(attachment.audioHash)) doReturn 1.5f + controller.play(attachment) + + controller.changeSpeed(attachment) + + assertEquals(1.5f, controller.state.value.current.playingSpeed) + assertEquals(1.5f, controller.state.value.speeds.getOrDefault(attachment.audioHash, 0f)) + } + + @Test + fun `changeSpeed stores the speed of a track which is not playing`() { + val attachment = audioRecordingAttachment() + whenever(audioPlayer.changeSpeed(attachment.audioHash)) doReturn 2f + + controller.changeSpeed(attachment) + + assertEquals(1.0f, controller.state.value.current.playingSpeed) + assertEquals(2f, controller.state.value.speeds.getOrDefault(attachment.audioHash, 0f)) + } + + @Test + fun `startSeek is ignored for a track which is not playing`() { + controller.startSeek(audioRecordingAttachment()) + + verify(audioPlayer, never()).startSeek(any()) + } + + @Test + fun `startSeek marks the current track as seeking`() { + val attachment = audioRecordingAttachment() + controller.play(attachment) + + controller.startSeek(attachment) + + verify(audioPlayer).startSeek(attachment.audioHash) + assertTrue(controller.state.value.current.isSeeking) + } + + @Test + fun `seekTo moves the playback position of the current track`() { + val attachment = audioRecordingAttachment() + controller.play(attachment) + + controller.seekTo(attachment, progress = 0.5f) + + verify(audioPlayer).seekTo(HALF_DURATION_IN_MS, attachment.audioHash) + val current = controller.state.value.current + assertFalse(current.isSeeking) + assertEquals(0.5f, current.playingProgress) + assertEquals(HALF_DURATION_IN_MS, current.playbackInMs) + assertEquals(0.5f, controller.state.value.seekTo.getOrDefault(attachment.audioHash, 0f)) + } + + @Test + fun `seekTo stores the position of a track which is not playing`() { + val attachment = audioRecordingAttachment() + + controller.seekTo(attachment, progress = 0.25f) + + verify(audioPlayer).seekTo(2500, attachment.audioHash) + assertEquals(NO_ID, controller.state.value.current.playingId) + assertEquals(0.25f, controller.state.value.seekTo.getOrDefault(attachment.audioHash, 0f)) + } + + @Test + fun `resetAudio is ignored for a track which is not playing`() { + controller.resetAudio(audioRecordingAttachment()) + + verify(audioPlayer, never()).resetAudio(any()) + } + + @Test + fun `resetAudio resets the current track`() { + val attachment = audioRecordingAttachment() + controller.play(attachment) + + controller.resetAudio(attachment) + + verify(audioPlayer).resetAudio(attachment.audioHash) + } + + @Test + fun `pause is ignored when no track is loaded`() { + controller.pause() + + verify(audioPlayer, never()).pause() + } + + @Test + fun `pause is ignored when the current track is not playing`() { + controller.play(audioRecordingAttachment()) + + controller.pause() + + verify(audioPlayer, never()).pause() + } + + @Test + fun `pause pauses the current playing track`() { + val listeners = playAndCaptureListeners(audioRecordingAttachment()) + listeners.onAudioState(AudioState.PLAYING) + + controller.pause() + + verify(audioPlayer).pause() + } + + @Test + fun `resume is ignored when no track is loaded`() { + controller.resume() + + verify(audioPlayer, never()).resume(any()) + } + + @Test + fun `resume is ignored when the current track is already playing`() { + val listeners = playAndCaptureListeners(audioRecordingAttachment()) + listeners.onAudioState(AudioState.PLAYING) + + controller.resume() + + verify(audioPlayer, never()).resume(any()) + } + + @Test + fun `resume is ignored when the player is not idle or paused`() { + controller.play(audioRecordingAttachment()) + whenever(audioPlayer.currentState) doReturn AudioState.LOADING + + controller.resume() + + verify(audioPlayer, never()).resume(any()) + } + + @Test + fun `resume resumes the current paused track`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + listeners.onAudioState(AudioState.PAUSE) + whenever(audioPlayer.currentState) doReturn AudioState.PAUSE + + controller.resume() + + verify(audioPlayer).resume(attachment.audioHash) + } + + @Test + fun `reset clears the player and the state`() { + val attachment = audioRecordingAttachment() + val listeners = playAndCaptureListeners(attachment) + listeners.onProgress( + ProgressData(currentPosition = HALF_DURATION_IN_MS, progress = 0.5f, duration = DURATION_IN_MS), + ) + controller.changeSpeed(attachment) + + controller.reset() + + verify(audioPlayer).reset() + val state = controller.state.value + assertEquals(NO_ID, state.current.playingId) + assertEquals(0, state.seekTo.size) + assertEquals(0, state.speeds.size) + } + + private fun playAndCaptureListeners(attachment: Attachment): PlayerListeners { + controller.play(attachment) + val stateCaptor = argumentCaptor<(AudioState) -> Unit>() + val progressCaptor = argumentCaptor<(ProgressData) -> Unit>() + val speedCaptor = argumentCaptor<(Float) -> Unit>() + verify(audioPlayer).registerOnAudioStateChange(eq(attachment.audioHash), stateCaptor.capture()) + verify(audioPlayer).registerOnProgressStateChange(eq(attachment.audioHash), progressCaptor.capture()) + verify(audioPlayer).registerOnSpeedChange(eq(attachment.audioHash), speedCaptor.capture()) + return PlayerListeners( + onAudioState = stateCaptor.firstValue, + onProgress = progressCaptor.firstValue, + onSpeed = speedCaptor.firstValue, + ) + } + + private class PlayerListeners( + val onAudioState: (AudioState) -> Unit, + val onProgress: (ProgressData) -> Unit, + val onSpeed: (Float) -> Unit, + ) + + private fun audioRecordingAttachment(): Attachment = randomAttachment( + type = AttachmentType.AUDIO_RECORDING, + extraData = mapOf( + EXTRA_DURATION to DURATION_IN_SECONDS, + EXTRA_WAVEFORM_DATA to WAVEFORM, + ), + ) + + private companion object { + private const val NO_ID = -1 + private const val RECORDING_URI = "recording-uri" + private const val DURATION_IN_SECONDS = 10f + private const val DURATION_IN_MS = 10_000 + private const val HALF_DURATION_IN_MS = 5_000 + private val WAVEFORM = listOf(0.1f, 0.5f, 0.9f) + } +} diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/typing/internal/DefaultTypingUpdatesBufferTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/typing/internal/DefaultTypingUpdatesBufferTest.kt new file mode 100644 index 00000000000..c385281de76 --- /dev/null +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/typing/internal/DefaultTypingUpdatesBufferTest.kt @@ -0,0 +1,143 @@ +/* + * 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.ui.common.utils.typing.internal + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceTimeBy +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +@OptIn(ExperimentalCoroutinesApi::class) +internal class DefaultTypingUpdatesBufferTest { + + @Test + fun `first keystroke sends a typing started event`() = runTest { + val fixture = Fixture(this) + + fixture.buffer.onKeystroke("a") + runCurrent() + + assertEquals(1, fixture.startedCount) + assertEquals(0, fixture.stoppedCount) + } + + @Test + fun `typing stopped is sent after the user stops typing`() = runTest { + val fixture = Fixture(this) + + fixture.buffer.onKeystroke("a") + runCurrent() + advanceTimeBy(SEND_TYPING_UPDATES_INTERVAL - 1) + runCurrent() + assertEquals(0, fixture.stoppedCount) + + advanceTimeBy(1) + runCurrent() + + assertEquals(1, fixture.startedCount) + assertEquals(1, fixture.stoppedCount) + } + + @Test + fun `continuous typing sends periodic typing started events without a stop`() = runTest { + val fixture = Fixture(this) + + fixture.buffer.onKeystroke("a") + runCurrent() + repeat(3) { + // Keep each keystroke gap below the stop threshold so no stop event fires. + advanceTimeBy(BUFFER_TYPING_UPDATES_INTERVAL - 100) + runCurrent() + fixture.buffer.onKeystroke("a".repeat(it + 2)) + } + // 3 * 900 + 400 = 3100ms, just past the periodic send boundary. + advanceTimeBy(400) + runCurrent() + + assertEquals(2, fixture.startedCount) + assertEquals(0, fixture.stoppedCount) + } + + @Test + fun `empty input sends typing stopped immediately`() = runTest { + val fixture = Fixture(this) + + fixture.buffer.onKeystroke("") + + assertEquals(0, fixture.startedCount) + assertEquals(1, fixture.stoppedCount) + } + + @Test + fun `clearing the input while typing sends typing stopped`() = runTest { + val fixture = Fixture(this) + + fixture.buffer.onKeystroke("a") + runCurrent() + fixture.buffer.onKeystroke("") + + assertEquals(1, fixture.startedCount) + assertEquals(1, fixture.stoppedCount) + } + + @Test + fun `clear cancels pending updates and sends typing stopped`() = runTest { + val fixture = Fixture(this) + fixture.buffer.onKeystroke("a") + runCurrent() + + fixture.buffer.clear() + assertEquals(1, fixture.stoppedCount) + + advanceTimeBy(SEND_TYPING_UPDATES_INTERVAL * 3) + runCurrent() + + assertEquals(1, fixture.startedCount) + assertEquals(1, fixture.stoppedCount) + } + + private class Fixture(testScope: TestScope) { + var startedCount = 0 + private set + var stoppedCount = 0 + private set + + val buffer = DefaultTypingUpdatesBuffer( + coroutineScope = CoroutineScope(SupervisorJob() + StandardTestDispatcher(testScope.testScheduler)), + onTypingStarted = { startedCount++ }, + onTypingStopped = { stoppedCount++ }, + ) + } + + private companion object { + /** + * Mirrors DEFAULT_SEND_TYPING_UPDATES_INTERVAL in [DefaultTypingUpdatesBuffer]. + */ + private const val SEND_TYPING_UPDATES_INTERVAL = 3000L + + /** + * Mirrors DEFAULT_BUFFER_TYPING_UPDATES_INTERVAL in [DefaultTypingUpdatesBuffer]. + */ + private const val BUFFER_TYPING_UPDATES_INTERVAL = 1000L + } +}