Fix performance issue reported by Konsist test Sealed interface used in Composable MUST be Immutable or Stable
This commit is contained in:
committed by
Benoit Marty
parent
8d3fe2daa5
commit
ab6c428a61
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user