Ensure clearing the cache delete the CacheStore.
This commit is contained in:
parent
c8773c890f
commit
b50969437d
8 changed files with 45 additions and 2 deletions
|
|
@ -14,6 +14,7 @@ import dev.zacsweers.metro.ContributesBinding
|
|||
import dev.zacsweers.metro.Provider
|
||||
import io.element.android.features.invite.api.SeenInvitesStore
|
||||
import io.element.android.features.preferences.impl.DefaultCacheService
|
||||
import io.element.android.libraries.cachestore.api.CacheStore
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.di.annotations.ApplicationContext
|
||||
|
|
@ -37,8 +38,11 @@ class DefaultClearCacheUseCase(
|
|||
private val pushService: PushService,
|
||||
private val seenInvitesStore: SeenInvitesStore,
|
||||
private val activeRoomsHolder: ActiveRoomsHolder,
|
||||
private val cacheStore: CacheStore,
|
||||
) : ClearCacheUseCase {
|
||||
override suspend fun invoke() = withContext(coroutineDispatchers.io) {
|
||||
// Clear cache store
|
||||
cacheStore.deleteAll()
|
||||
// Active rooms should be disposed of before clearing the cache
|
||||
activeRoomsHolder.clear(matrixClient.sessionId)
|
||||
// Clear Matrix cache
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID
|
|||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
|
||||
import io.element.android.libraries.push.test.FakePushService
|
||||
import io.element.android.libraries.sessionstorage.test.InMemoryCacheStore
|
||||
import io.element.android.libraries.sessionstorage.test.aCacheData
|
||||
import io.element.android.services.appnavstate.impl.DefaultActiveRoomsHolder
|
||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||
import io.element.android.tests.testutils.lambda.value
|
||||
|
|
@ -49,6 +51,9 @@ class DefaultClearCacheUseCaseTest {
|
|||
)
|
||||
val seenInvitesStore = InMemorySeenInvitesStore(setOf(A_ROOM_ID))
|
||||
assertThat(seenInvitesStore.seenRoomIds().first()).isNotEmpty()
|
||||
val cacheStore = InMemoryCacheStore(
|
||||
initialData = mapOf("key1" to aCacheData())
|
||||
)
|
||||
val sut = DefaultClearCacheUseCase(
|
||||
context = InstrumentationRegistry.getInstrumentation().context,
|
||||
matrixClient = matrixClient,
|
||||
|
|
@ -58,9 +63,11 @@ class DefaultClearCacheUseCaseTest {
|
|||
pushService = pushService,
|
||||
seenInvitesStore = seenInvitesStore,
|
||||
activeRoomsHolder = activeRoomsHolder,
|
||||
cacheStore = cacheStore,
|
||||
)
|
||||
defaultCacheService.clearedCacheEventFlow.test {
|
||||
sut.invoke()
|
||||
assertThat(cacheStore.dataMap).isEmpty()
|
||||
clearCacheLambda.assertions().isCalledOnce()
|
||||
setIgnoreRegistrationErrorLambda.assertions().isCalledOnce()
|
||||
.with(value(matrixClient.sessionId), value(false))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue