Live location : format the endsAt timeline item content
This commit is contained in:
parent
b082f59f9c
commit
a7e254cc84
3 changed files with 16 additions and 3 deletions
|
|
@ -38,6 +38,8 @@ import io.element.android.libraries.matrix.api.timeline.item.event.StickerConten
|
|||
import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.getDisambiguatedDisplayName
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import io.element.android.services.toolbox.api.strings.StringProvider
|
||||
|
||||
@Inject
|
||||
class TimelineItemContentFactory(
|
||||
|
|
@ -52,6 +54,8 @@ class TimelineItemContentFactory(
|
|||
private val failedToParseMessageFactory: TimelineItemContentFailedToParseMessageFactory,
|
||||
private val failedToParseStateFactory: TimelineItemContentFailedToParseStateFactory,
|
||||
private val sessionId: SessionId,
|
||||
private val dateFormatter: DateFormatter,
|
||||
private val stringProvider: StringProvider,
|
||||
) {
|
||||
suspend fun create(eventTimelineItem: EventTimelineItem): TimelineItemEventContent {
|
||||
return create(
|
||||
|
|
@ -105,7 +109,12 @@ class TimelineItemContentFactory(
|
|||
val lastKnownLocation = itemContent.locations.mapNotNull { beacon ->
|
||||
Location.fromGeoUri(beacon.geoUri)
|
||||
}.lastOrNull()
|
||||
// Always create content - location can be null for "loading/waiting" state
|
||||
|
||||
val endsAt = dateFormatter.format(
|
||||
timestamp = itemContent.endsAt,
|
||||
mode = DateFormatterMode.TimeOnly
|
||||
)
|
||||
// Always create content, location can be null for "loading/waiting" state
|
||||
TimelineItemLocationContent(
|
||||
description = itemContent.description?.trimEnd(),
|
||||
assetType = itemContent.assetType,
|
||||
|
|
@ -114,7 +123,7 @@ class TimelineItemContentFactory(
|
|||
mode = TimelineItemLocationContent.Mode.Live(
|
||||
lastKnownLocation = lastKnownLocation,
|
||||
isActive = itemContent.isLive,
|
||||
endsAt = "",
|
||||
endsAt = stringProvider.getString(CommonStrings.common_ends_at, endsAt),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,10 +107,13 @@ data class FailedToParseStateContent(
|
|||
data class LiveLocationContent(
|
||||
val isLive: Boolean,
|
||||
val description: String?,
|
||||
val timestamp: Long,
|
||||
val timeout: Long,
|
||||
val assetType: AssetType?,
|
||||
val locations: List<LiveLocationInfo>,
|
||||
) : EventContent
|
||||
) : EventContent {
|
||||
val endsAt = timestamp + timeout
|
||||
}
|
||||
|
||||
data object LegacyCallInviteContent : EventContent
|
||||
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ class TimelineEventContentMapper(
|
|||
is MsgLikeKind.LiveLocation -> {
|
||||
LiveLocationContent(
|
||||
isLive = kind.content.isLive,
|
||||
timestamp = kind.content.ts.toLong(),
|
||||
description = kind.content.description,
|
||||
timeout = kind.content.timeoutMs.toLong(),
|
||||
assetType = kind.content.assetType.into(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue