Merge pull request #5503 from element-hq/feature/bma/immutableCleanup
Do some cleanup on our immutable annotation usage
This commit is contained in:
commit
3fb110d991
73 changed files with 178 additions and 107 deletions
|
|
@ -26,7 +26,6 @@ import androidx.compose.ui.graphics.Color
|
|||
/**
|
||||
* This class holds all the semantic tokens of the Compound theme.
|
||||
*/
|
||||
@Immutable
|
||||
data class SemanticColors(
|
||||
/** Background colour for accent or brand actions. State: Hover */
|
||||
val bgAccentHovered: Color,
|
||||
|
|
|
|||
|
|
@ -7,11 +7,9 @@
|
|||
|
||||
package io.element.android.libraries.designsystem.components.avatar
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.core.data.tryOrNull
|
||||
import java.text.BreakIterator
|
||||
|
||||
@Immutable
|
||||
data class AvatarData(
|
||||
val id: String,
|
||||
val name: String?,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -156,8 +156,8 @@ public class CameraPositionState(
|
|||
/**
|
||||
* The default saver implementation for [CameraPositionState].
|
||||
*/
|
||||
public val Saver: Saver<CameraPositionState, SaveableCameraPositionState> = Saver(
|
||||
save = { SaveableCameraPositionState(it.position, it.cameraMode.toInternal()) },
|
||||
public val Saver: Saver<CameraPositionState, SaveableCameraPositionData> = Saver(
|
||||
save = { SaveableCameraPositionData(it.position, it.cameraMode.toInternal()) },
|
||||
restore = { CameraPositionState(it.position, CameraMode.fromInternal(it.cameraMode)) }
|
||||
)
|
||||
}
|
||||
|
|
@ -172,7 +172,7 @@ public val currentCameraPositionState: CameraPositionState
|
|||
get() = LocalCameraPositionState.current
|
||||
|
||||
@Parcelize
|
||||
public data class SaveableCameraPositionState(
|
||||
public data class SaveableCameraPositionData(
|
||||
val position: CameraPosition,
|
||||
val cameraMode: Int
|
||||
) : Parcelable
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
package io.element.android.libraries.matrix.api.room
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
|
|
@ -19,7 +18,6 @@ import io.element.android.libraries.matrix.api.room.tombstone.SuccessorRoom
|
|||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
@Immutable
|
||||
data class RoomInfo(
|
||||
val id: RoomId,
|
||||
/** The room's name from the room state event if received from sync, or one that's been computed otherwise. */
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
package io.element.android.libraries.matrix.api.room
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||
|
||||
|
|
@ -24,6 +25,7 @@ data class RoomMember(
|
|||
/**
|
||||
* Role of the RoomMember, based on its [powerLevel].
|
||||
*/
|
||||
@Immutable
|
||||
sealed interface Role {
|
||||
data class Owner(val isCreator: Boolean) : Role
|
||||
data object Admin : Role
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ interface RoomDirectoryList {
|
|||
/**
|
||||
* The current search results as a state flow.
|
||||
*/
|
||||
val state: Flow<State>
|
||||
val state: Flow<SearchResult>
|
||||
|
||||
data class State(
|
||||
data class SearchResult(
|
||||
val hasMoreToLoad: Boolean,
|
||||
val items: List<RoomDescription>,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
package io.element.android.libraries.matrix.api.timeline
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
|
|
@ -42,6 +43,7 @@ interface Timeline : AutoCloseable {
|
|||
}
|
||||
|
||||
@Parcelize
|
||||
@Immutable
|
||||
sealed interface Mode : Parcelable {
|
||||
data object Live : Mode
|
||||
data class FocusedOnEvent(val eventId: EventId) : Mode
|
||||
|
|
|
|||
|
|
@ -7,10 +7,8 @@
|
|||
|
||||
package io.element.android.libraries.matrix.api.timeline.item.event
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
@Immutable
|
||||
data class EventReaction(
|
||||
val key: String,
|
||||
val senders: ImmutableList<ReactionSender>
|
||||
|
|
|
|||
|
|
@ -8,10 +8,13 @@
|
|||
package io.element.android.libraries.matrix.api.verification
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Immutable
|
||||
sealed interface VerificationRequest : Parcelable {
|
||||
@Immutable
|
||||
sealed interface Outgoing : VerificationRequest {
|
||||
@Parcelize
|
||||
data object CurrentSession : Outgoing
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
package io.element.android.libraries.matrix.impl.room
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.matrix.api.room.NotJoinedRoom
|
||||
|
|
@ -15,7 +14,6 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipDetails
|
|||
import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo
|
||||
import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper
|
||||
|
||||
@Immutable
|
||||
class NotJoinedRustRoom(
|
||||
private val sessionId: SessionId,
|
||||
override val localRoom: RustBaseRoom?,
|
||||
|
|
|
|||
|
|
@ -73,9 +73,9 @@ class RustRoomDirectoryList(
|
|||
return !inner.isAtLastPage()
|
||||
}
|
||||
|
||||
override val state: Flow<RoomDirectoryList.State> =
|
||||
override val state: Flow<RoomDirectoryList.SearchResult> =
|
||||
combine(hasMoreToLoad, processor.roomDescriptionsFlow) { hasMoreToLoad, items ->
|
||||
RoomDirectoryList.State(
|
||||
RoomDirectoryList.SearchResult(
|
||||
hasMoreToLoad = hasMoreToLoad,
|
||||
items = items
|
||||
)
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class RustBaseRoomDirectoryListTest {
|
|||
)
|
||||
val initialItem = awaitItem()
|
||||
assertThat(initialItem).isEqualTo(
|
||||
RoomDirectoryList.State(
|
||||
RoomDirectoryList.SearchResult(
|
||||
hasMoreToLoad = true,
|
||||
items = listOf(mapper.map(aRustRoomDescription()))
|
||||
)
|
||||
|
|
@ -57,7 +57,7 @@ class RustBaseRoomDirectoryListTest {
|
|||
)
|
||||
val nextItem = awaitItem()
|
||||
assertThat(nextItem).isEqualTo(
|
||||
RoomDirectoryList.State(
|
||||
RoomDirectoryList.SearchResult(
|
||||
hasMoreToLoad = false,
|
||||
items = listOf(
|
||||
mapper.map(aRustRoomDescription()),
|
||||
|
|
@ -66,7 +66,7 @@ class RustBaseRoomDirectoryListTest {
|
|||
)
|
||||
val finalItem = awaitItem()
|
||||
assertThat(finalItem).isEqualTo(
|
||||
RoomDirectoryList.State(
|
||||
RoomDirectoryList.SearchResult(
|
||||
hasMoreToLoad = false,
|
||||
items = listOf(
|
||||
mapper.map(aRustRoomDescription()),
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
package io.element.android.libraries.matrix.test.room
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.libraries.matrix.api.room.BaseRoom
|
||||
import io.element.android.libraries.matrix.api.room.NotJoinedRoom
|
||||
import io.element.android.libraries.matrix.api.room.RoomMembershipDetails
|
||||
|
|
@ -15,7 +14,6 @@ import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo
|
|||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
import io.element.android.tests.testutils.simulateLongTask
|
||||
|
||||
@Immutable
|
||||
class FakeNotJoinedRoom(
|
||||
override val localRoom: BaseRoom? = null,
|
||||
override val previewInfo: RoomPreviewInfo = aRoomPreviewInfo(),
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import kotlinx.coroutines.flow.Flow
|
|||
import kotlinx.coroutines.flow.emptyFlow
|
||||
|
||||
class FakeRoomDirectoryList(
|
||||
override val state: Flow<RoomDirectoryList.State> = emptyFlow(),
|
||||
override val state: Flow<RoomDirectoryList.SearchResult> = emptyFlow(),
|
||||
val filterLambda: (String?, Int, String?) -> Result<Unit> = { _, _, _ -> Result.success(Unit) },
|
||||
val loadMoreLambda: () -> Result<Unit> = { Result.success(Unit) }
|
||||
) : RoomDirectoryList {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
package io.element.android.libraries.matrix.ui.model
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
|
|
@ -21,7 +20,6 @@ import io.element.android.libraries.matrix.api.core.UserId
|
|||
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||
import io.element.android.libraries.matrix.ui.R
|
||||
|
||||
@Immutable
|
||||
data class InviteSender(
|
||||
val userId: UserId,
|
||||
val displayName: String,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@
|
|||
|
||||
package io.element.android.libraries.sessionstorage.api
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
|
||||
@Immutable
|
||||
sealed interface LoggedInState {
|
||||
data object NotLoggedIn : LoggedInState
|
||||
data class LoggedIn(
|
||||
|
|
|
|||
|
|
@ -128,15 +128,15 @@ class MarkdownTextEditorState(
|
|||
}
|
||||
|
||||
@Parcelize
|
||||
data class SavedState(
|
||||
data class SavedValue(
|
||||
val text: CharSequence,
|
||||
val selectionStart: Int,
|
||||
val selectionEnd: Int,
|
||||
) : Parcelable
|
||||
}
|
||||
|
||||
object MarkdownTextEditorStateSaver : Saver<MarkdownTextEditorState, MarkdownTextEditorState.SavedState> {
|
||||
override fun restore(value: MarkdownTextEditorState.SavedState): MarkdownTextEditorState {
|
||||
object MarkdownTextEditorStateSaver : Saver<MarkdownTextEditorState, MarkdownTextEditorState.SavedValue> {
|
||||
override fun restore(value: MarkdownTextEditorState.SavedValue): MarkdownTextEditorState {
|
||||
return MarkdownTextEditorState(
|
||||
initialText = "",
|
||||
initialFocus = false,
|
||||
|
|
@ -146,8 +146,8 @@ object MarkdownTextEditorStateSaver : Saver<MarkdownTextEditorState, MarkdownTex
|
|||
}
|
||||
}
|
||||
|
||||
override fun SaverScope.save(value: MarkdownTextEditorState): MarkdownTextEditorState.SavedState {
|
||||
return MarkdownTextEditorState.SavedState(
|
||||
override fun SaverScope.save(value: MarkdownTextEditorState): MarkdownTextEditorState.SavedValue {
|
||||
return MarkdownTextEditorState.SavedValue(
|
||||
text = value.text.value(),
|
||||
selectionStart = value.selection.first,
|
||||
selectionEnd = value.selection.last,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -7,11 +7,14 @@
|
|||
|
||||
package io.element.android.libraries.troubleshoot.api.test
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
|
||||
data class NotificationTroubleshootTestState(
|
||||
val name: String,
|
||||
val description: String,
|
||||
val status: Status,
|
||||
) {
|
||||
@Immutable
|
||||
sealed interface Status {
|
||||
data class Idle(val visible: Boolean) : Status
|
||||
data object InProgress : Status
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue