Expose liveLocationSharing methods from sdk

This commit is contained in:
ganfra 2026-02-18 14:59:49 +01:00
parent f8d0de2391
commit f25b2a8045
5 changed files with 124 additions and 0 deletions

View file

@ -27,6 +27,7 @@ import io.element.android.libraries.matrix.api.room.SendQueueUpdate
import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility
import io.element.android.libraries.matrix.api.room.join.JoinRule
import io.element.android.libraries.matrix.api.room.knock.KnockRequest
import io.element.android.libraries.matrix.api.room.location.LiveLocationShare
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues
import io.element.android.libraries.matrix.api.room.powerlevels.UserRoleChange
import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility
@ -84,6 +85,10 @@ class FakeJoinedRoom(
private val enableEncryptionResult: () -> Result<Unit> = { lambdaError() },
private val updateJoinRuleResult: (JoinRule) -> Result<Unit> = { lambdaError() },
private val setSendQueueEnabledResult: (Boolean) -> Unit = { _: Boolean -> },
private val liveLocationSharesFlow: Flow<List<LiveLocationShare>> = MutableStateFlow(emptyList()),
private val startLiveLocationShareResult: (Long) -> Result<Unit> = { lambdaError() },
private val stopLiveLocationShareResult: () -> Result<Unit> = { lambdaError() },
private val sendLiveLocationResult: (String) -> Result<Unit> = { lambdaError() },
) : JoinedRoom, BaseRoom by baseRoom {
private val sendQueueUpdates = MutableSharedFlow<SendQueueUpdate>(extraBufferCapacity = 10)
@ -227,6 +232,22 @@ class FakeJoinedRoom(
return sendQueueUpdates
}
override fun subscribeToLiveLocationShares(): Flow<List<LiveLocationShare>> {
return liveLocationSharesFlow
}
override suspend fun startLiveLocationShare(durationMillis: Long): Result<Unit> = simulateLongTask {
startLiveLocationShareResult(durationMillis)
}
override suspend fun stopLiveLocationShare(): Result<Unit> = simulateLongTask {
stopLiveLocationShareResult()
}
override suspend fun sendLiveLocation(geoUri: String): Result<Unit> = simulateLongTask {
sendLiveLocationResult(geoUri)
}
private suspend fun simulateSendMediaProgress(progressCallback: ProgressCallback?) {
progressCallbackValues.forEach { (current, total) ->
progressCallback?.onProgress(current, total)