mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 13:38:49 +03:00
Code review fixes, use unstable prefixes as MSCs suggest.
This commit is contained in:
parent
2a4182ea84
commit
922d68cfda
3 changed files with 26 additions and 8 deletions
|
@ -49,7 +49,7 @@ object EventType {
|
||||||
const val STATE_ROOM_JOIN_RULES = "m.room.join_rules"
|
const val STATE_ROOM_JOIN_RULES = "m.room.join_rules"
|
||||||
const val STATE_ROOM_GUEST_ACCESS = "m.room.guest_access"
|
const val STATE_ROOM_GUEST_ACCESS = "m.room.guest_access"
|
||||||
const val STATE_ROOM_POWER_LEVELS = "m.room.power_levels"
|
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"
|
const val STATE_SPACE_CHILD = "m.space.child"
|
||||||
|
|
||||||
|
@ -121,4 +121,12 @@ object EventType {
|
||||||
type == CALL_REJECT ||
|
type == CALL_REJECT ||
|
||||||
type == CALL_REPLACES
|
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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,13 +25,23 @@ data class LiveLocationBeaconContent(
|
||||||
/**
|
/**
|
||||||
* Indicates user's intent to share ephemeral location.
|
* 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,
|
@Json(name = "m.beacon_info") val beaconInfo: BeaconInfo? = null,
|
||||||
/**
|
/**
|
||||||
* Beacon creation timestamp.
|
* Beacon creation timestamp.
|
||||||
*/
|
*/
|
||||||
|
@Json(name = "org.matrix.msc3488.ts") val unstableTimestampAsMilliseconds: Long? = null,
|
||||||
@Json(name = "m.ts") val timestampAsMillisecond: Long? = null,
|
@Json(name = "m.ts") val timestampAsMillisecond: Long? = null,
|
||||||
/**
|
/**
|
||||||
* Live location asset type.
|
* 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
|
||||||
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import im.vector.app.features.session.coroutineScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import org.matrix.android.sdk.api.session.Session
|
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.events.model.toContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.BeaconInfo
|
import org.matrix.android.sdk.api.session.room.model.BeaconInfo
|
||||||
import org.matrix.android.sdk.api.session.room.model.LiveLocationBeaconContent
|
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) {
|
private suspend fun sendBeaconInfo(session: Session, roomArgs: RoomArgs) {
|
||||||
val beaconContent = LiveLocationBeaconContent(
|
val beaconContent = LiveLocationBeaconContent(
|
||||||
beaconInfo = BeaconInfo(
|
unstableBeaconInfo = BeaconInfo(
|
||||||
timeout = roomArgs.durationMillis,
|
timeout = roomArgs.durationMillis,
|
||||||
isLive = true
|
isLive = true
|
||||||
),
|
),
|
||||||
timestampAsMillisecond = clock.epochMillis()
|
unstableTimestampAsMilliseconds = clock.epochMillis()
|
||||||
).toContent()
|
).toContent()
|
||||||
|
|
||||||
// This format is not yet finalized
|
val eventType = generateBeaconInfoStateEventType(session.myUserId)
|
||||||
val stateKey = session.myUserId
|
val stateKey = session.myUserId
|
||||||
session
|
session
|
||||||
.getRoom(roomArgs.roomId)
|
.getRoom(roomArgs.roomId)
|
||||||
?.sendStateEvent(
|
?.sendStateEvent(
|
||||||
eventType = EventType.STATE_ROOM_BEACON_INFO,
|
eventType = eventType,
|
||||||
stateKey = stateKey,
|
stateKey = stateKey,
|
||||||
body = beaconContent
|
body = beaconContent
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue