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
|
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.
|
* 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 startLiveLocationShareTask: StartLiveLocationShareTask,
|
||||||
private val stopLiveLocationShareTask: StopLiveLocationShareTask,
|
private val stopLiveLocationShareTask: StopLiveLocationShareTask,
|
||||||
private val checkIfExistingActiveLiveTask: CheckIfExistingActiveLiveTask,
|
private val checkIfExistingActiveLiveTask: CheckIfExistingActiveLiveTask,
|
||||||
|
private val redactLiveLocationShareTask: RedactLiveLocationShareTask,
|
||||||
private val liveLocationShareAggregatedSummaryMapper: LiveLocationShareAggregatedSummaryMapper,
|
private val liveLocationShareAggregatedSummaryMapper: LiveLocationShareAggregatedSummaryMapper,
|
||||||
) : LocationSharingService {
|
) : LocationSharingService {
|
||||||
|
|
||||||
|
@ -102,6 +103,15 @@ internal class DefaultLocationSharingService @AssistedInject constructor(
|
||||||
return stopLiveLocationShareTask.execute(params)
|
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>> {
|
override fun getRunningLiveLocationShareSummaries(): LiveData<List<LiveLocationShareAggregatedSummary>> {
|
||||||
return monarchy.findAllMappedWithChanges(
|
return monarchy.findAllMappedWithChanges(
|
||||||
{ LiveLocationShareAggregatedSummaryEntity.findRunningLiveInRoom(it, roomId = roomId) },
|
{ LiveLocationShareAggregatedSummaryEntity.findRunningLiveInRoom(it, roomId = roomId) },
|
||||||
|
|
|
@ -22,8 +22,10 @@ import androidx.lifecycle.Transformations
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.coVerify
|
import io.mockk.coVerify
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkStatic
|
import io.mockk.mockkStatic
|
||||||
|
import io.mockk.runs
|
||||||
import io.mockk.slot
|
import io.mockk.slot
|
||||||
import io.mockk.unmockkAll
|
import io.mockk.unmockkAll
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
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 AN_UNCERTAINTY = 5.0
|
||||||
private const val A_TIMEOUT = 15_000L
|
private const val A_TIMEOUT = 15_000L
|
||||||
private const val A_DESCRIPTION = "description"
|
private const val A_DESCRIPTION = "description"
|
||||||
|
private const val A_REASON = "reason"
|
||||||
|
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
internal class DefaultLocationSharingServiceTest {
|
internal class DefaultLocationSharingServiceTest {
|
||||||
|
@ -62,6 +65,7 @@ internal class DefaultLocationSharingServiceTest {
|
||||||
private val startLiveLocationShareTask = mockk<StartLiveLocationShareTask>()
|
private val startLiveLocationShareTask = mockk<StartLiveLocationShareTask>()
|
||||||
private val stopLiveLocationShareTask = mockk<StopLiveLocationShareTask>()
|
private val stopLiveLocationShareTask = mockk<StopLiveLocationShareTask>()
|
||||||
private val checkIfExistingActiveLiveTask = mockk<CheckIfExistingActiveLiveTask>()
|
private val checkIfExistingActiveLiveTask = mockk<CheckIfExistingActiveLiveTask>()
|
||||||
|
private val redactLiveLocationShareTask = mockk<RedactLiveLocationShareTask>()
|
||||||
private val fakeLiveLocationShareAggregatedSummaryMapper = mockk<LiveLocationShareAggregatedSummaryMapper>()
|
private val fakeLiveLocationShareAggregatedSummaryMapper = mockk<LiveLocationShareAggregatedSummaryMapper>()
|
||||||
|
|
||||||
private val defaultLocationSharingService = DefaultLocationSharingService(
|
private val defaultLocationSharingService = DefaultLocationSharingService(
|
||||||
|
@ -72,6 +76,7 @@ internal class DefaultLocationSharingServiceTest {
|
||||||
startLiveLocationShareTask = startLiveLocationShareTask,
|
startLiveLocationShareTask = startLiveLocationShareTask,
|
||||||
stopLiveLocationShareTask = stopLiveLocationShareTask,
|
stopLiveLocationShareTask = stopLiveLocationShareTask,
|
||||||
checkIfExistingActiveLiveTask = checkIfExistingActiveLiveTask,
|
checkIfExistingActiveLiveTask = checkIfExistingActiveLiveTask,
|
||||||
|
redactLiveLocationShareTask = redactLiveLocationShareTask,
|
||||||
liveLocationShareAggregatedSummaryMapper = fakeLiveLocationShareAggregatedSummaryMapper
|
liveLocationShareAggregatedSummaryMapper = fakeLiveLocationShareAggregatedSummaryMapper
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -209,6 +214,20 @@ internal class DefaultLocationSharingServiceTest {
|
||||||
coVerify { stopLiveLocationShareTask.execute(expectedParams) }
|
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
|
@Test
|
||||||
fun `livedata of live summaries is correctly computed`() {
|
fun `livedata of live summaries is correctly computed`() {
|
||||||
val entity = LiveLocationShareAggregatedSummaryEntity()
|
val entity = LiveLocationShareAggregatedSummaryEntity()
|
||||||
|
|
Loading…
Reference in a new issue