Fix performance issue reported by Konsist test Sealed interface used in Composable MUST be Immutable or Stable

This commit is contained in:
Benoit Marty 2024-05-29 18:03:39 +02:00 committed by Benoit Marty
parent b994a1ea91
commit 7348f74702
6 changed files with 14 additions and 0 deletions

View file

@ -42,6 +42,7 @@ data class JoinRoomState(
}
}
@Immutable
sealed interface ContentState {
data class Loading(val roomIdOrAlias: RoomIdOrAlias) : ContentState
data class Failure(val roomIdOrAlias: RoomIdOrAlias, val error: Throwable) : ContentState

View file

@ -16,6 +16,7 @@
package io.element.android.features.messages.impl.attachments.preview
import androidx.compose.runtime.Immutable
import io.element.android.features.messages.impl.attachments.Attachment
data class AttachmentsPreviewState(
@ -24,8 +25,11 @@ data class AttachmentsPreviewState(
val eventSink: (AttachmentsPreviewEvents) -> Unit
)
@Immutable
sealed interface SendActionState {
data object Idle : SendActionState
@Immutable
sealed interface Sending : SendActionState {
data object Processing : Sending
data class Uploading(val progress: Float) : Sending

View file

@ -16,8 +16,10 @@
package io.element.android.features.messages.impl.sender
import androidx.compose.runtime.Immutable
import androidx.compose.ui.graphics.Color
@Immutable
sealed interface SenderNameMode {
data class Timeline(val mainColor: Color) : SenderNameMode
data object Reply : SenderNameMode

View file

@ -16,6 +16,7 @@
package io.element.android.features.roomdetails.impl
import androidx.compose.runtime.Immutable
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.features.userprofile.shared.UserProfileState
import io.element.android.libraries.matrix.api.core.RoomAlias
@ -45,11 +46,13 @@ data class RoomDetailsState(
val eventSink: (RoomDetailsEvent) -> Unit
)
@Immutable
sealed interface RoomDetailsType {
data object Room : RoomDetailsType
data class Dm(val roomMember: RoomMember) : RoomDetailsType
}
@Immutable
sealed interface RoomTopicState {
data object Hidden : RoomTopicState
data object CanAddTopic : RoomTopicState