Simplify PermalinkData, now that we have RoomIdOrAlias interface.

This commit is contained in:
Benoit Marty 2024-04-16 12:45:24 +02:00 committed by Benoit Marty
parent c1188ebb2d
commit c1bb910dbd
6 changed files with 32 additions and 71 deletions

View file

@ -19,10 +19,11 @@ package io.element.android.libraries.matrix.api.permalink
import android.net.Uri
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
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
import io.element.android.libraries.matrix.api.core.UserId
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
/**
* This sealed class represents all the permalink cases.
@ -30,36 +31,11 @@ import kotlinx.collections.immutable.ImmutableList
*/
@Immutable
sealed interface PermalinkData {
sealed interface RoomLink : PermalinkData {
val viaParameters: ImmutableList<String>
}
data class RoomIdLink(
val roomId: RoomId,
override val viaParameters: ImmutableList<String>
) : RoomLink
data class RoomAliasLink(
val roomAlias: RoomAlias,
override val viaParameters: ImmutableList<String>
) : RoomLink
sealed interface EventLink : PermalinkData {
val eventId: EventId
val viaParameters: ImmutableList<String>
}
data class EventIdLink(
val roomId: RoomId,
override val eventId: EventId,
override val viaParameters: ImmutableList<String>
) : EventLink
data class EventIdAliasLink(
val roomAlias: RoomAlias,
override val eventId: EventId,
override val viaParameters: ImmutableList<String>
) : EventLink
data class RoomLink(
val roomIdOrAlias: RoomIdOrAlias,
val eventId: EventId? = null,
val viaParameters: ImmutableList<String> = persistentListOf()
) : PermalinkData
/*
* &room_name=Team2

View file

@ -23,6 +23,7 @@ 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
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
import io.element.android.libraries.matrix.api.permalink.MatrixToConverter
import io.element.android.libraries.matrix.api.permalink.PermalinkData
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
@ -60,24 +61,24 @@ class DefaultPermalinkParser @Inject constructor(
} else {
val viaParameters = result.via.toImmutableList()
when (val id = result.id) {
is MatrixId.Room -> PermalinkData.RoomIdLink(
roomId = RoomId(id.id),
viaParameters = viaParameters,
)
is MatrixId.User -> PermalinkData.UserLink(
userId = UserId(id.id),
)
is MatrixId.RoomAlias -> PermalinkData.RoomAliasLink(
roomAlias = RoomAlias(id.alias),
is MatrixId.Room -> PermalinkData.RoomLink(
roomIdOrAlias = RoomId(id.id).toRoomIdOrAlias(),
viaParameters = viaParameters,
)
is MatrixId.EventOnRoomId -> PermalinkData.EventIdLink(
roomId = RoomId(id.roomId),
is MatrixId.RoomAlias -> PermalinkData.RoomLink(
roomIdOrAlias = RoomAlias(id.alias).toRoomIdOrAlias(),
viaParameters = viaParameters,
)
is MatrixId.EventOnRoomId -> PermalinkData.RoomLink(
roomIdOrAlias = RoomId(id.roomId).toRoomIdOrAlias(),
eventId = EventId(id.eventId),
viaParameters = viaParameters,
)
is MatrixId.EventOnRoomAlias -> PermalinkData.EventIdAliasLink(
roomAlias = RoomAlias(id.alias),
is MatrixId.EventOnRoomAlias -> PermalinkData.RoomLink(
roomIdOrAlias = RoomAlias(id.alias).toRoomIdOrAlias(),
eventId = EventId(id.eventId),
viaParameters = viaParameters,
)