From 922d68cfda52fc3bcfff4547c731b346480a2a9d Mon Sep 17 00:00:00 2001 From: Onuray Sahin Date: Fri, 1 Apr 2022 15:01:25 +0300 Subject: [PATCH] Code review fixes, use unstable prefixes as MSCs suggest. --- .../sdk/api/session/events/model/EventType.kt | 10 +++++++++- .../room/model/LiveLocationBeaconContent.kt | 14 ++++++++++++-- .../features/location/LocationSharingService.kt | 10 +++++----- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt index 460b9ae1d2..855801e79e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt @@ -49,7 +49,7 @@ object EventType { const val STATE_ROOM_JOIN_RULES = "m.room.join_rules" const val STATE_ROOM_GUEST_ACCESS = "m.room.guest_access" const val STATE_ROOM_POWER_LEVELS = "m.room.power_levels" - const val STATE_ROOM_BEACON_INFO = "m.beacon_info" + private const val STATE_ROOM_BEACON_INFO_PREFIX = "org.matrix.msc3489.beacon_info." const val STATE_SPACE_CHILD = "m.space.child" @@ -121,4 +121,12 @@ object EventType { type == CALL_REJECT || type == CALL_REPLACES } + + /** + * Returns an event type like org.matrix.msc3489.beacon_info.@userid:matrix.org.1648814272273 + */ + fun generateBeaconInfoStateEventType(userId: String): String { + val uniqueId = System.currentTimeMillis() + return "$STATE_ROOM_BEACON_INFO_PREFIX$userId.$uniqueId" + } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/LiveLocationBeaconContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/LiveLocationBeaconContent.kt index 1c80984d2d..d32dcc7dfd 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/LiveLocationBeaconContent.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/LiveLocationBeaconContent.kt @@ -25,13 +25,23 @@ data class LiveLocationBeaconContent( /** * Indicates user's intent to share ephemeral location. */ + @Json(name = "org.matrix.msc3489.beacon_info") val unstableBeaconInfo: BeaconInfo? = null, @Json(name = "m.beacon_info") val beaconInfo: BeaconInfo? = null, /** * Beacon creation timestamp. */ + @Json(name = "org.matrix.msc3488.ts") val unstableTimestampAsMilliseconds: Long? = null, @Json(name = "m.ts") val timestampAsMillisecond: Long? = null, /** * Live location asset type. */ - @Json(name = "m.asset") val locationAsset: LocationAsset = LocationAsset(type = "m.self.live") -) + @Json(name = "org.matrix.msc3488.asset") val unstableLocationAsset: LocationAsset = LocationAsset("m.self"), + @Json(name = "m.asset") val locationAsset: LocationAsset? = null +) { + + fun getBestBeaconInfo() = beaconInfo ?: unstableBeaconInfo + + fun getBestTimestampAsMilliseconds() = timestampAsMillisecond ?: unstableTimestampAsMilliseconds + + fun getBestLocationAsset() = locationAsset ?: unstableLocationAsset +} diff --git a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt index 0a330b497b..36a299ef25 100644 --- a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt +++ b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt @@ -28,7 +28,7 @@ import im.vector.app.features.session.coroutineScope import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize import org.matrix.android.sdk.api.session.Session -import org.matrix.android.sdk.api.session.events.model.EventType +import org.matrix.android.sdk.api.session.events.model.EventType.generateBeaconInfoStateEventType import org.matrix.android.sdk.api.session.events.model.toContent import org.matrix.android.sdk.api.session.room.model.BeaconInfo import org.matrix.android.sdk.api.session.room.model.LiveLocationBeaconContent @@ -94,19 +94,19 @@ class LocationSharingService : VectorService(), LocationTracker.Callback { private suspend fun sendBeaconInfo(session: Session, roomArgs: RoomArgs) { val beaconContent = LiveLocationBeaconContent( - beaconInfo = BeaconInfo( + unstableBeaconInfo = BeaconInfo( timeout = roomArgs.durationMillis, isLive = true ), - timestampAsMillisecond = clock.epochMillis() + unstableTimestampAsMilliseconds = clock.epochMillis() ).toContent() - // This format is not yet finalized + val eventType = generateBeaconInfoStateEventType(session.myUserId) val stateKey = session.myUserId session .getRoom(roomArgs.roomId) ?.sendStateEvent( - eventType = EventType.STATE_ROOM_BEACON_INFO, + eventType = eventType, stateKey = stateKey, body = beaconContent )