mirror of
https://github.com/element-hq/element-android
synced 2024-11-27 11:59:12 +03:00
Adding new method in location sharing service to redact a live location share
This commit is contained in:
parent
c9273dd067
commit
237a5a18f3
3 changed files with 36 additions and 0 deletions
|
@ -59,6 +59,13 @@ interface LocationSharingService {
|
|||
*/
|
||||
suspend fun stopLiveLocationShare(): UpdateLiveLocationShareResult
|
||||
|
||||
/**
|
||||
* Redact (delete) the live associated to the given beacon info event id.
|
||||
* @param beaconInfoEventId event id of the initial beacon info state event
|
||||
* @param reason Optional reason string
|
||||
*/
|
||||
suspend fun redactLiveLocationShare(beaconInfoEventId: String, reason: String?)
|
||||
|
||||
/**
|
||||
* Returns a LiveData on the list of current running live location shares.
|
||||
*/
|
||||
|
|
|
@ -42,6 +42,7 @@ internal class DefaultLocationSharingService @AssistedInject constructor(
|
|||
private val startLiveLocationShareTask: StartLiveLocationShareTask,
|
||||
private val stopLiveLocationShareTask: StopLiveLocationShareTask,
|
||||
private val checkIfExistingActiveLiveTask: CheckIfExistingActiveLiveTask,
|
||||
private val redactLiveLocationShareTask: RedactLiveLocationShareTask,
|
||||
private val liveLocationShareAggregatedSummaryMapper: LiveLocationShareAggregatedSummaryMapper,
|
||||
) : LocationSharingService {
|
||||
|
||||
|
@ -102,6 +103,15 @@ internal class DefaultLocationSharingService @AssistedInject constructor(
|
|||
return stopLiveLocationShareTask.execute(params)
|
||||
}
|
||||
|
||||
override suspend fun redactLiveLocationShare(beaconInfoEventId: String, reason: String?) {
|
||||
val params = RedactLiveLocationShareTask.Params(
|
||||
roomId = roomId,
|
||||
beaconInfoEventId = beaconInfoEventId,
|
||||
reason = reason
|
||||
)
|
||||
return redactLiveLocationShareTask.execute(params)
|
||||
}
|
||||
|
||||
override fun getRunningLiveLocationShareSummaries(): LiveData<List<LiveLocationShareAggregatedSummary>> {
|
||||
return monarchy.findAllMappedWithChanges(
|
||||
{ LiveLocationShareAggregatedSummaryEntity.findRunningLiveInRoom(it, roomId = roomId) },
|
||||
|
|
|
@ -22,8 +22,10 @@ import androidx.lifecycle.Transformations
|
|||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.runs
|
||||
import io.mockk.slot
|
||||
import io.mockk.unmockkAll
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
|
@ -52,6 +54,7 @@ private const val A_LONGITUDE = 40.0
|
|||
private const val AN_UNCERTAINTY = 5.0
|
||||
private const val A_TIMEOUT = 15_000L
|
||||
private const val A_DESCRIPTION = "description"
|
||||
private const val A_REASON = "reason"
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
internal class DefaultLocationSharingServiceTest {
|
||||
|
@ -62,6 +65,7 @@ internal class DefaultLocationSharingServiceTest {
|
|||
private val startLiveLocationShareTask = mockk<StartLiveLocationShareTask>()
|
||||
private val stopLiveLocationShareTask = mockk<StopLiveLocationShareTask>()
|
||||
private val checkIfExistingActiveLiveTask = mockk<CheckIfExistingActiveLiveTask>()
|
||||
private val redactLiveLocationShareTask = mockk<RedactLiveLocationShareTask>()
|
||||
private val fakeLiveLocationShareAggregatedSummaryMapper = mockk<LiveLocationShareAggregatedSummaryMapper>()
|
||||
|
||||
private val defaultLocationSharingService = DefaultLocationSharingService(
|
||||
|
@ -72,6 +76,7 @@ internal class DefaultLocationSharingServiceTest {
|
|||
startLiveLocationShareTask = startLiveLocationShareTask,
|
||||
stopLiveLocationShareTask = stopLiveLocationShareTask,
|
||||
checkIfExistingActiveLiveTask = checkIfExistingActiveLiveTask,
|
||||
redactLiveLocationShareTask = redactLiveLocationShareTask,
|
||||
liveLocationShareAggregatedSummaryMapper = fakeLiveLocationShareAggregatedSummaryMapper
|
||||
)
|
||||
|
||||
|
@ -209,6 +214,20 @@ internal class DefaultLocationSharingServiceTest {
|
|||
coVerify { stopLiveLocationShareTask.execute(expectedParams) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `live location share can be redacted`() = runTest {
|
||||
coEvery { redactLiveLocationShareTask.execute(any()) } just runs
|
||||
|
||||
defaultLocationSharingService.redactLiveLocationShare(beaconInfoEventId = AN_EVENT_ID, reason = A_REASON)
|
||||
|
||||
val expectedParams = RedactLiveLocationShareTask.Params(
|
||||
roomId = A_ROOM_ID,
|
||||
beaconInfoEventId = AN_EVENT_ID,
|
||||
reason = A_REASON
|
||||
)
|
||||
coVerify { redactLiveLocationShareTask.execute(expectedParams) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `livedata of live summaries is correctly computed`() {
|
||||
val entity = LiveLocationShareAggregatedSummaryEntity()
|
||||
|
|
Loading…
Reference in a new issue