Add sendLocation API to Rust Room (#681)

Will be used by the location sharing feature.
This commit is contained in:
Marco Romano
2023-06-27 09:12:17 +02:00
committed by GitHub
parent 8bd291ecd7
commit 8101f42979
3 changed files with 34 additions and 0 deletions

View File

@@ -114,4 +114,13 @@ interface MatrixRoom : Closeable {
suspend fun setTopic(topic: String): Result<Unit>
suspend fun reportContent(eventId: EventId, reason: String, blockUserId: UserId?): Result<Unit>
/**
* Share a location message in the room.
*
* @param body A human readable textual representation of the location.
* @param geoUri A geo URI (RFC 5870) representing the location e.g. `geo:51.5008,0.1247;u=35`.
* Respectively: latitude, longitude, and (optional) uncertainty.
*/
suspend fun sendLocation(body: String, geoUri: String): Result<Unit>
}

View File

@@ -338,4 +338,13 @@ class RustMatrixRoom(
}
}
}
override suspend fun sendLocation(
body: String,
geoUri: String
): Result<Unit> = withContext(coroutineDispatchers.io) {
runCatching {
innerRoom.sendLocation(body, geoUri, genTransactionId())
}
}
}

View File

@@ -77,6 +77,7 @@ class FakeMatrixRoom(
private var cancelSendResult = Result.success(Unit)
private var forwardEventResult = Result.success(Unit)
private var reportContentResult = Result.success(Unit)
private var sendLocationResult = Result.success(Unit)
var sendMediaCount = 0
private set
@@ -93,6 +94,9 @@ class FakeMatrixRoom(
var reportedContentCount: Int = 0
private set
var sendLocationCount: Int = 0
private set
var isInviteAccepted: Boolean = false
private set
@@ -262,6 +266,14 @@ class FakeMatrixRoom(
return reportContentResult
}
override suspend fun sendLocation(
body: String,
geoUri: String
): Result<Unit> = simulateLongTask {
sendLocationCount++
return sendLocationResult
}
override fun close() = Unit
fun givenLeaveRoomError(throwable: Throwable?) {
@@ -355,4 +367,8 @@ class FakeMatrixRoom(
fun givenReportContentResult(result: Result<Unit>) {
reportContentResult = result
}
fun givenSendLocationResult(result: Result<Unit>) {
sendLocationResult = result
}
}