Create value class for transactionId. There is no validation on the format, but validation is a bonus for userId, roomId, etc.

The main advantage of using value classes instead of Strings everywhere is to detect errors at compilation time.
This commit is contained in:
Benoit Marty 2023-07-12 18:15:17 +02:00
parent 1e45235c64
commit 6e2f645514
14 changed files with 59 additions and 22 deletions

View file

@ -18,6 +18,7 @@ package io.element.android.libraries.textcomposer
import android.os.Parcelable
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailInfo
import kotlinx.parcelize.Parcelize
@ -29,7 +30,7 @@ sealed interface MessageComposerMode : Parcelable {
MessageComposerMode
@Parcelize
data class Edit(override val eventId: EventId?, override val defaultContent: CharSequence, val transactionId: String?) :
data class Edit(override val eventId: EventId?, override val defaultContent: CharSequence, val transactionId: TransactionId?) :
Special(eventId, defaultContent)
@Parcelize

View file

@ -77,6 +77,7 @@ import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Surface
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.api.media.MediaSource
import io.element.android.libraries.matrix.ui.components.AttachmentThumbnail
import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailInfo
@ -449,7 +450,7 @@ fun TextComposerEditPreview() = ElementPreview {
TextComposer(
onSendMessage = {},
onComposerTextChange = {},
composerMode = MessageComposerMode.Edit(EventId("$1234"), "Some text", "1234"),
composerMode = MessageComposerMode.Edit(EventId("$1234"), "Some text", TransactionId("1234")),
onResetComposerMode = {},
composerCanSendMessage = true,
composerText = "A message",