Removing live location share data from MessageInformationData structure
This commit is contained in:
parent
1d6083b2c7
commit
cbf8306c6f
@ -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()
|
||||
|
@ -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 {
|
||||
|
@ -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.
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user