Clear cache: clear Coil and OkHttpClient cache.
This commit is contained in:
parent
12e54ac080
commit
0ee2861452
2 changed files with 19 additions and 0 deletions
|
|
@ -41,6 +41,7 @@ dependencies {
|
||||||
implementation(projects.libraries.featureflag.api)
|
implementation(projects.libraries.featureflag.api)
|
||||||
implementation(projects.libraries.featureflag.ui)
|
implementation(projects.libraries.featureflag.ui)
|
||||||
implementation(projects.libraries.elementresources)
|
implementation(projects.libraries.elementresources)
|
||||||
|
implementation(projects.libraries.network)
|
||||||
implementation(projects.libraries.testtags)
|
implementation(projects.libraries.testtags)
|
||||||
implementation(projects.libraries.uiStrings)
|
implementation(projects.libraries.uiStrings)
|
||||||
implementation(projects.features.rageshake.api)
|
implementation(projects.features.rageshake.api)
|
||||||
|
|
@ -49,6 +50,7 @@ dependencies {
|
||||||
implementation(projects.features.logout.api)
|
implementation(projects.features.logout.api)
|
||||||
implementation(libs.datetime)
|
implementation(libs.datetime)
|
||||||
implementation(libs.accompanist.placeholder)
|
implementation(libs.accompanist.placeholder)
|
||||||
|
implementation(libs.coil.compose)
|
||||||
api(projects.features.preferences.api)
|
api(projects.features.preferences.api)
|
||||||
ksp(libs.showkase.processor)
|
ksp(libs.showkase.processor)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,13 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:OptIn(ExperimentalCoilApi::class)
|
||||||
|
|
||||||
package io.element.android.features.preferences.impl.tasks
|
package io.element.android.features.preferences.impl.tasks
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import coil.Coil
|
||||||
|
import coil.annotation.ExperimentalCoilApi
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.di.ApplicationContext
|
import io.element.android.libraries.di.ApplicationContext
|
||||||
|
|
@ -24,7 +28,9 @@ import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
|
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import javax.inject.Provider
|
||||||
|
|
||||||
interface ClearCacheUseCase {
|
interface ClearCacheUseCase {
|
||||||
suspend fun execute()
|
suspend fun execute()
|
||||||
|
|
@ -36,10 +42,21 @@ class DefaultClearCacheUseCase @Inject constructor(
|
||||||
private val matrixClient: MatrixClient,
|
private val matrixClient: MatrixClient,
|
||||||
private val coroutineDispatchers: CoroutineDispatchers,
|
private val coroutineDispatchers: CoroutineDispatchers,
|
||||||
private val authenticationService: MatrixAuthenticationService,
|
private val authenticationService: MatrixAuthenticationService,
|
||||||
|
private val okHttpClient: Provider<OkHttpClient>,
|
||||||
) : ClearCacheUseCase {
|
) : ClearCacheUseCase {
|
||||||
override suspend fun execute() = withContext(coroutineDispatchers.io) {
|
override suspend fun execute() = withContext(coroutineDispatchers.io) {
|
||||||
|
// Clear Matrix cache
|
||||||
matrixClient.clearCache()
|
matrixClient.clearCache()
|
||||||
|
// Clear Coil cache
|
||||||
|
Coil.imageLoader(context).let {
|
||||||
|
it.diskCache?.clear()
|
||||||
|
it.memoryCache?.clear()
|
||||||
|
}
|
||||||
|
// Clear OkHttp cache
|
||||||
|
okHttpClient.get().cache?.delete()
|
||||||
|
// Clear app cache
|
||||||
context.cacheDir.deleteRecursively()
|
context.cacheDir.deleteRecursively()
|
||||||
|
// Ensure the app is restarted
|
||||||
authenticationService.incrementCacheIdx()
|
authenticationService.incrementCacheIdx()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue