From 102684ed88ab97192d7f314f4863985a431e3836 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL Date: Tue, 31 May 2022 15:56:23 +0200 Subject: [PATCH] Fixing aggregation process --- .../livelocation/LiveLocationAggregationProcessor.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessor.kt index 8f4682a9d5..05bde8f83f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessor.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessor.kt @@ -67,16 +67,18 @@ internal class LiveLocationAggregationProcessor @Inject constructor( eventId = targetEventId ) - Timber.d("updating summary of id=$targetEventId with isLive=${content.isLive}") - + // remote event can stay with isLive == true while the local summary is no more active + val isActive = aggregatedSummary.isActive.orTrue() && isLive val endOfLiveTimestampMillis = content.getBestTimestampMillis()?.let { it + (content.timeout ?: 0) } + Timber.d("updating summary of id=$targetEventId with isActive=$isActive and endTimestamp=$endOfLiveTimestampMillis") + aggregatedSummary.endOfLiveTimestampMillis = endOfLiveTimestampMillis - aggregatedSummary.isActive = isLive + aggregatedSummary.isActive = isActive aggregatedSummary.userId = event.senderId deactivateAllPreviousBeacons(realm, roomId, event.senderId, targetEventId) - if (isLive) { + if (isActive) { scheduleDeactivationAfterTimeout(targetEventId, roomId, endOfLiveTimestampMillis) } else { cancelDeactivationAfterTimeout(targetEventId, roomId) @@ -90,6 +92,7 @@ internal class LiveLocationAggregationProcessor @Inject constructor( val workData = WorkerParamsFactory.toData(workParams) val workName = DeactivateLiveLocationShareWorker.getWorkName(eventId = eventId, roomId = roomId) val workDelayMillis = (endOfLiveTimestampMillis - clock.epochMillis()).coerceAtLeast(0) + Timber.d("scheduling deactivation of $eventId after $workDelayMillis millis") val workRequest = workManagerProvider.matrixOneTimeWorkRequestBuilder() .setInitialDelay(workDelayMillis, TimeUnit.MILLISECONDS) .setInputData(workData)