Removing live location share data from MessageInformationData structure

This commit is contained in:
Maxime NATUREL 2022-05-17 15:09:27 +02:00
parent 1d6083b2c7
commit cbf8306c6f
4 changed files with 20 additions and 28 deletions

View File

@ -24,7 +24,6 @@ import im.vector.app.features.home.room.detail.timeline.helper.AvatarSizeProvide
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
import im.vector.app.features.home.room.detail.timeline.helper.TimelineMediaSizeProvider
import im.vector.app.features.home.room.detail.timeline.item.AbsMessageItem
import im.vector.app.features.home.room.detail.timeline.item.LiveLocationShareSummaryData
import im.vector.app.features.home.room.detail.timeline.item.MessageLiveLocationInactiveItem
import im.vector.app.features.home.room.detail.timeline.item.MessageLiveLocationInactiveItem_
import im.vector.app.features.home.room.detail.timeline.item.MessageLiveLocationItem
@ -36,6 +35,7 @@ import im.vector.app.features.location.UrlMapProvider
import im.vector.app.features.location.toLocationData
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
import org.threeten.bp.LocalDateTime
import timber.log.Timber
import javax.inject.Inject
@ -51,10 +51,11 @@ class LiveLocationShareMessageItemFactory @Inject constructor(
) {
fun create(
liveLocationShareSummaryData: LiveLocationShareSummaryData?,
event: TimelineEvent,
highlight: Boolean,
attributes: AbsMessageItem.Attributes,
): VectorEpoxyModel<*>? {
val liveLocationShareSummaryData = getLiveLocationShareSummaryData(event)
val item = when (val currentState = getViewState(liveLocationShareSummaryData)) {
LiveLocationShareViewState.Inactive -> buildInactiveItem(highlight, attributes)
LiveLocationShareViewState.Loading -> buildLoadingItem(highlight, attributes)
@ -150,6 +151,22 @@ class LiveLocationShareMessageItemFactory @Inject constructor(
return liveLocationShareSummaryData.endOfLiveTimestampMillis?.let { DateProvider.toLocalDateTime(timestamp = it) }
}
private fun getLiveLocationShareSummaryData(event: TimelineEvent): LiveLocationShareSummaryData? {
return event.annotations?.liveLocationShareAggregatedSummary?.let { summary ->
LiveLocationShareSummaryData(
isActive = summary.isActive,
endOfLiveTimestampMillis = summary.endOfLiveTimestampMillis,
lastGeoUri = summary.lastLocationDataContent?.getBestLocationInfo()?.geoUri
)
}
}
private data class LiveLocationShareSummaryData(
val isActive: Boolean?,
val endOfLiveTimestampMillis: Long?,
val lastGeoUri: String?,
)
private sealed class LiveLocationShareViewState {
object Loading : LiveLocationShareViewState()
data class Running(val lastGeoUri: String, val endOfLiveDateTime: LocalDateTime?) : LiveLocationShareViewState()

View File

@ -216,12 +216,7 @@ class MessageItemFactory @Inject constructor(
buildMessageTextItem(messageContent.body, false, informationData, highlight, callback, attributes)
}
}
is MessageBeaconInfoContent ->
liveLocationShareMessageItemFactory.create(
informationData.liveLocationShareSummaryData,
highlight,
attributes
)
is MessageBeaconInfoContent -> liveLocationShareMessageItemFactory.create(params.event, highlight, attributes)
else -> buildNotHandledMessageItem(messageContent, informationData, highlight, callback, attributes)
}
return messageItem?.apply {

View File

@ -21,7 +21,6 @@ import im.vector.app.core.date.VectorDateFormatter
import im.vector.app.core.extensions.localDateTime
import im.vector.app.features.home.room.detail.timeline.factory.TimelineItemFactoryParams
import im.vector.app.features.home.room.detail.timeline.item.E2EDecoration
import im.vector.app.features.home.room.detail.timeline.item.LiveLocationShareSummaryData
import im.vector.app.features.home.room.detail.timeline.item.MessageInformationData
import im.vector.app.features.home.room.detail.timeline.item.PollResponseData
import im.vector.app.features.home.room.detail.timeline.item.PollVoteSummaryData
@ -120,7 +119,6 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses
isLastFromThisSender = isLastFromThisSender,
e2eDecoration = e2eDecoration,
sendStateDecoration = sendStateDecoration,
liveLocationShareSummaryData = getLiveLocationShareSummaryData(event)
)
}
@ -189,16 +187,6 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses
}
}
private fun getLiveLocationShareSummaryData(event: TimelineEvent): LiveLocationShareSummaryData? {
return event.annotations?.liveLocationShareAggregatedSummary?.let { summary ->
LiveLocationShareSummaryData(
isActive = summary.isActive,
endOfLiveTimestampMillis = summary.endOfLiveTimestampMillis,
lastGeoUri = summary.lastLocationDataContent?.getBestLocationInfo()?.geoUri
)
}
}
/**
* Tiles type message never show the sender information (like verification request), so we should repeat it for next message
* even if same sender.

View File

@ -43,7 +43,6 @@ data class MessageInformationData(
val sendStateDecoration: SendStateDecoration = SendStateDecoration.NONE,
val isFirstFromThisSender: Boolean = false,
val isLastFromThisSender: Boolean = false,
val liveLocationShareSummaryData: LiveLocationShareSummaryData? = null,
) : Parcelable {
val matrixItem: MatrixItem
@ -99,13 +98,6 @@ data class PollVoteSummaryData(
val percentage: Double = 0.0
) : Parcelable
@Parcelize
data class LiveLocationShareSummaryData(
val isActive: Boolean?,
val endOfLiveTimestampMillis: Long?,
val lastGeoUri: String?,
) : Parcelable
enum class E2EDecoration {
NONE,
WARN_IN_CLEAR,