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.LocationPinProvider
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.TimelineMediaSizeProvider
|
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.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.MessageLiveLocationInactiveItem_
|
import im.vector.app.features.home.room.detail.timeline.item.MessageLiveLocationInactiveItem_
|
||||||
import im.vector.app.features.home.room.detail.timeline.item.MessageLiveLocationItem
|
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 im.vector.app.features.location.toLocationData
|
||||||
import org.matrix.android.sdk.api.extensions.orFalse
|
import org.matrix.android.sdk.api.extensions.orFalse
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
|
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
||||||
import org.threeten.bp.LocalDateTime
|
import org.threeten.bp.LocalDateTime
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -51,10 +51,11 @@ class LiveLocationShareMessageItemFactory @Inject constructor(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
fun create(
|
fun create(
|
||||||
liveLocationShareSummaryData: LiveLocationShareSummaryData?,
|
event: TimelineEvent,
|
||||||
highlight: Boolean,
|
highlight: Boolean,
|
||||||
attributes: AbsMessageItem.Attributes,
|
attributes: AbsMessageItem.Attributes,
|
||||||
): VectorEpoxyModel<*>? {
|
): VectorEpoxyModel<*>? {
|
||||||
|
val liveLocationShareSummaryData = getLiveLocationShareSummaryData(event)
|
||||||
val item = when (val currentState = getViewState(liveLocationShareSummaryData)) {
|
val item = when (val currentState = getViewState(liveLocationShareSummaryData)) {
|
||||||
LiveLocationShareViewState.Inactive -> buildInactiveItem(highlight, attributes)
|
LiveLocationShareViewState.Inactive -> buildInactiveItem(highlight, attributes)
|
||||||
LiveLocationShareViewState.Loading -> buildLoadingItem(highlight, attributes)
|
LiveLocationShareViewState.Loading -> buildLoadingItem(highlight, attributes)
|
||||||
@ -150,6 +151,22 @@ class LiveLocationShareMessageItemFactory @Inject constructor(
|
|||||||
return liveLocationShareSummaryData.endOfLiveTimestampMillis?.let { DateProvider.toLocalDateTime(timestamp = it) }
|
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 {
|
private sealed class LiveLocationShareViewState {
|
||||||
object Loading : LiveLocationShareViewState()
|
object Loading : LiveLocationShareViewState()
|
||||||
data class Running(val lastGeoUri: String, val endOfLiveDateTime: LocalDateTime?) : 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)
|
buildMessageTextItem(messageContent.body, false, informationData, highlight, callback, attributes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is MessageBeaconInfoContent ->
|
is MessageBeaconInfoContent -> liveLocationShareMessageItemFactory.create(params.event, highlight, attributes)
|
||||||
liveLocationShareMessageItemFactory.create(
|
|
||||||
informationData.liveLocationShareSummaryData,
|
|
||||||
highlight,
|
|
||||||
attributes
|
|
||||||
)
|
|
||||||
else -> buildNotHandledMessageItem(messageContent, informationData, highlight, callback, attributes)
|
else -> buildNotHandledMessageItem(messageContent, informationData, highlight, callback, attributes)
|
||||||
}
|
}
|
||||||
return messageItem?.apply {
|
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.core.extensions.localDateTime
|
||||||
import im.vector.app.features.home.room.detail.timeline.factory.TimelineItemFactoryParams
|
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.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.MessageInformationData
|
||||||
import im.vector.app.features.home.room.detail.timeline.item.PollResponseData
|
import im.vector.app.features.home.room.detail.timeline.item.PollResponseData
|
||||||
import im.vector.app.features.home.room.detail.timeline.item.PollVoteSummaryData
|
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,
|
isLastFromThisSender = isLastFromThisSender,
|
||||||
e2eDecoration = e2eDecoration,
|
e2eDecoration = e2eDecoration,
|
||||||
sendStateDecoration = sendStateDecoration,
|
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
|
* Tiles type message never show the sender information (like verification request), so we should repeat it for next message
|
||||||
* even if same sender.
|
* even if same sender.
|
||||||
|
@ -43,7 +43,6 @@ data class MessageInformationData(
|
|||||||
val sendStateDecoration: SendStateDecoration = SendStateDecoration.NONE,
|
val sendStateDecoration: SendStateDecoration = SendStateDecoration.NONE,
|
||||||
val isFirstFromThisSender: Boolean = false,
|
val isFirstFromThisSender: Boolean = false,
|
||||||
val isLastFromThisSender: Boolean = false,
|
val isLastFromThisSender: Boolean = false,
|
||||||
val liveLocationShareSummaryData: LiveLocationShareSummaryData? = null,
|
|
||||||
) : Parcelable {
|
) : Parcelable {
|
||||||
|
|
||||||
val matrixItem: MatrixItem
|
val matrixItem: MatrixItem
|
||||||
@ -99,13 +98,6 @@ data class PollVoteSummaryData(
|
|||||||
val percentage: Double = 0.0
|
val percentage: Double = 0.0
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
|
||||||
@Parcelize
|
|
||||||
data class LiveLocationShareSummaryData(
|
|
||||||
val isActive: Boolean?,
|
|
||||||
val endOfLiveTimestampMillis: Long?,
|
|
||||||
val lastGeoUri: String?,
|
|
||||||
) : Parcelable
|
|
||||||
|
|
||||||
enum class E2EDecoration {
|
enum class E2EDecoration {
|
||||||
NONE,
|
NONE,
|
||||||
WARN_IN_CLEAR,
|
WARN_IN_CLEAR,
|
||||||
|
Loading…
Reference in New Issue
Block a user