Add location update timestamp live location view state mapper.

This commit is contained in:
Onuray Sahin 2022-05-27 15:33:57 +03:00
parent 924d7e10a1
commit 8247b1dd7a

View file

@ -16,14 +16,18 @@
package im.vector.app.features.location.live.map
import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
import im.vector.app.features.location.toLocationData
import kotlinx.coroutines.suspendCancellableCoroutine
import org.matrix.android.sdk.api.session.getUser
import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary
import org.matrix.android.sdk.api.util.toMatrixItem
import javax.inject.Inject
class UserLiveLocationViewStateMapper @Inject constructor(
private val locationPinProvider: LocationPinProvider,
private val activeSessionHolder: ActiveSessionHolder,
) {
suspend fun map(liveLocationShareAggregatedSummary: LiveLocationShareAggregatedSummary) =
@ -40,14 +44,18 @@ class UserLiveLocationViewStateMapper @Inject constructor(
}
else -> {
locationPinProvider.create(userId) { pinDrawable ->
val viewState = UserLiveLocationViewState(
userId = userId,
pinDrawable = pinDrawable,
locationData = locationData,
endOfLiveTimestampMillis = liveLocationShareAggregatedSummary.endOfLiveTimestampMillis
)
continuation.resume(viewState) {
// do nothing on cancellation
activeSessionHolder.getActiveSession().getUser(userId)?.toMatrixItem()?.let { matrixItem ->
val locationTimestampMillis = liveLocationShareAggregatedSummary.lastLocationDataContent?.getBestTimestampMillis()
val viewState = UserLiveLocationViewState(
matrixItem = matrixItem,
pinDrawable = pinDrawable,
locationData = locationData,
endOfLiveTimestampMillis = liveLocationShareAggregatedSummary.endOfLiveTimestampMillis,
locationTimestampMillis = locationTimestampMillis
)
continuation.resume(viewState) {
// do nothing on cancellation
}
}
}
}