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 8d3fe2daa5
commit ab6c428a61
6 changed files with 14 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
package io.element.android.appnav.room.joined
import androidx.compose.runtime.Immutable
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.di.SingleIn
@@ -31,6 +32,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import javax.inject.Inject
@Immutable
sealed interface LoadingRoomState {
data object Loading : LoadingRoomState
data object Error : LoadingRoomState

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

View File

@@ -17,8 +17,10 @@
package io.element.android.libraries.matrix.api.core
import android.os.Parcelable
import androidx.compose.runtime.Immutable
import kotlinx.parcelize.Parcelize
@Immutable
sealed interface RoomIdOrAlias : Parcelable {
@Parcelize
@JvmInline