Add MatrixClient.getDatabaseSizes
This returns a `SdkStoreSizes` object, with the possible SDK database sizes.
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
18482a99e3
commit
dc0b508b08
@@ -9,6 +9,7 @@
|
||||
package io.element.android.libraries.matrix.api
|
||||
|
||||
import io.element.android.libraries.core.data.tryOrNull
|
||||
import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes
|
||||
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.MatrixPatterns
|
||||
@@ -81,6 +82,7 @@ interface MatrixClient {
|
||||
suspend fun joinRoomByIdOrAlias(roomIdOrAlias: RoomIdOrAlias, serverNames: List<String>): Result<RoomInfo?>
|
||||
suspend fun knockRoom(roomIdOrAlias: RoomIdOrAlias, message: String, serverNames: List<String>): Result<RoomInfo?>
|
||||
suspend fun getCacheSize(): Long
|
||||
suspend fun getDatabaseSizes(): Result<SdkStoreSizes>
|
||||
|
||||
/**
|
||||
* Will close the client and delete the cache data.
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.api.analytics
|
||||
|
||||
import io.element.android.libraries.core.data.ByteSize
|
||||
|
||||
/**
|
||||
* The sizes of the different stores (DBs) in the SDK.
|
||||
*/
|
||||
data class SdkStoreSizes(
|
||||
val stateStore: ByteSize?,
|
||||
val eventCacheStore: ByteSize?,
|
||||
val mediaStore: ByteSize?,
|
||||
val cryptoStore: ByteSize?,
|
||||
)
|
||||
@@ -12,11 +12,13 @@ import io.element.android.libraries.androidutils.file.getSizeOfFiles
|
||||
import io.element.android.libraries.core.bool.orFalse
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.core.coroutine.childScope
|
||||
import io.element.android.libraries.core.data.bytes
|
||||
import io.element.android.libraries.core.data.tryOrNull
|
||||
import io.element.android.libraries.core.extensions.mapFailure
|
||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes
|
||||
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
@@ -566,6 +568,17 @@ class RustMatrixClient(
|
||||
return getCacheSize(includeCryptoDb = false)
|
||||
}
|
||||
|
||||
override suspend fun getDatabaseSizes(): Result<SdkStoreSizes> = runCatchingExceptions {
|
||||
innerClient.getStoreSizes().run {
|
||||
SdkStoreSizes(
|
||||
stateStore = stateStore?.bytes,
|
||||
eventCacheStore = eventCacheStore?.bytes,
|
||||
mediaStore = mediaStore?.bytes,
|
||||
cryptoStore = cryptoStore?.bytes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun clearCache() {
|
||||
innerClient.clearCaches(innerSyncService)
|
||||
destroy()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package io.element.android.libraries.matrix.test
|
||||
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes
|
||||
import io.element.android.libraries.matrix.api.core.DeviceId
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
@@ -105,6 +106,7 @@ class FakeMatrixClient(
|
||||
private val addRecentEmojiLambda: (String) -> Result<Unit> = { Result.success(Unit) },
|
||||
private val markRoomAsFullyReadResult: (RoomId, EventId) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||
private val performDatabaseVacuumLambda: () -> Result<Unit> = { lambdaError() },
|
||||
private val getDatabaseSizesLambda: () -> Result<SdkStoreSizes> = { lambdaError() },
|
||||
) : MatrixClient {
|
||||
var setDisplayNameCalled: Boolean = false
|
||||
private set
|
||||
@@ -184,6 +186,10 @@ class FakeMatrixClient(
|
||||
return 0
|
||||
}
|
||||
|
||||
override suspend fun getDatabaseSizes(): Result<SdkStoreSizes> {
|
||||
return getDatabaseSizesLambda()
|
||||
}
|
||||
|
||||
override suspend fun clearCache() = simulateLongTask {
|
||||
clearCacheLambda()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user