Adding live location summary data into MessageInformationData
This commit is contained in:
parent
0b00f97879
commit
90aad44edf
@ -21,6 +21,7 @@ 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
|
||||||
@ -44,8 +45,7 @@ import org.matrix.android.sdk.api.session.room.timeline.hasBeenEdited
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Update this comment
|
* This class is responsible of building extra information data associated to a given event.
|
||||||
* This class compute if data of an event (such has avatar, display name, ...) should be displayed, depending on the previous event in the timeline
|
|
||||||
*/
|
*/
|
||||||
class MessageInformationDataFactory @Inject constructor(private val session: Session,
|
class MessageInformationDataFactory @Inject constructor(private val session: Session,
|
||||||
private val dateFormatter: VectorDateFormatter,
|
private val dateFormatter: VectorDateFormatter,
|
||||||
@ -119,7 +119,8 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses
|
|||||||
isFirstFromThisSender = isFirstFromThisSender,
|
isFirstFromThisSender = isFirstFromThisSender,
|
||||||
isLastFromThisSender = isLastFromThisSender,
|
isLastFromThisSender = isLastFromThisSender,
|
||||||
e2eDecoration = e2eDecoration,
|
e2eDecoration = e2eDecoration,
|
||||||
sendStateDecoration = sendStateDecoration
|
sendStateDecoration = sendStateDecoration,
|
||||||
|
liveLocationShareSummaryData = getLiveLocationShareSummaryData(event)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +189,16 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getLiveLocationShareSummaryData(event: TimelineEvent): LiveLocationShareSummaryData? {
|
||||||
|
return event.annotations?.liveLocationShareAggregatedSummary?.let { summary ->
|
||||||
|
LiveLocationShareSummaryData(
|
||||||
|
isActive = summary.isActive,
|
||||||
|
endOfLiveTimestampAsMilliseconds = summary.endOfLiveTimestampAsMilliseconds,
|
||||||
|
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
|
||||||
|
@ -20,6 +20,8 @@ import android.os.Parcelable
|
|||||||
import im.vector.app.features.home.room.detail.timeline.style.TimelineMessageLayout
|
import im.vector.app.features.home.room.detail.timeline.style.TimelineMessageLayout
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import org.matrix.android.sdk.api.session.crypto.verification.VerificationState
|
import org.matrix.android.sdk.api.session.crypto.verification.VerificationState
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.message.LocationInfo
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconLocationDataContent
|
||||||
import org.matrix.android.sdk.api.session.room.send.SendState
|
import org.matrix.android.sdk.api.session.room.send.SendState
|
||||||
import org.matrix.android.sdk.api.util.MatrixItem
|
import org.matrix.android.sdk.api.util.MatrixItem
|
||||||
|
|
||||||
@ -42,7 +44,8 @@ data class MessageInformationData(
|
|||||||
val e2eDecoration: E2EDecoration = E2EDecoration.NONE,
|
val e2eDecoration: E2EDecoration = E2EDecoration.NONE,
|
||||||
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
|
||||||
@ -98,6 +101,13 @@ data class PollVoteSummaryData(
|
|||||||
val percentage: Double = 0.0
|
val percentage: Double = 0.0
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
|
||||||
|
@Parcelize
|
||||||
|
data class LiveLocationShareSummaryData(
|
||||||
|
val isActive: Boolean?,
|
||||||
|
val endOfLiveTimestampAsMilliseconds: Long?,
|
||||||
|
val lastGeoUri: String?,
|
||||||
|
) : Parcelable
|
||||||
|
|
||||||
enum class E2EDecoration {
|
enum class E2EDecoration {
|
||||||
NONE,
|
NONE,
|
||||||
WARN_IN_CLEAR,
|
WARN_IN_CLEAR,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user