Add MatrixClient.getDatabaseSizes
This returns a `SdkStoreSizes` object, with the possible SDK database sizes.
This commit is contained in:
parent
18482a99e3
commit
dc0b508b08
4 changed files with 41 additions and 0 deletions
|
|
@ -9,6 +9,7 @@
|
||||||
package io.element.android.libraries.matrix.api
|
package io.element.android.libraries.matrix.api
|
||||||
|
|
||||||
import io.element.android.libraries.core.data.tryOrNull
|
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.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.MatrixPatterns
|
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 joinRoomByIdOrAlias(roomIdOrAlias: RoomIdOrAlias, serverNames: List<String>): Result<RoomInfo?>
|
||||||
suspend fun knockRoom(roomIdOrAlias: RoomIdOrAlias, message: String, serverNames: List<String>): Result<RoomInfo?>
|
suspend fun knockRoom(roomIdOrAlias: RoomIdOrAlias, message: String, serverNames: List<String>): Result<RoomInfo?>
|
||||||
suspend fun getCacheSize(): Long
|
suspend fun getCacheSize(): Long
|
||||||
|
suspend fun getDatabaseSizes(): Result<SdkStoreSizes>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will close the client and delete the cache data.
|
* 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.bool.orFalse
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.core.coroutine.childScope
|
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.data.tryOrNull
|
||||||
import io.element.android.libraries.core.extensions.mapFailure
|
import io.element.android.libraries.core.extensions.mapFailure
|
||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
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.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
|
|
@ -566,6 +568,17 @@ class RustMatrixClient(
|
||||||
return getCacheSize(includeCryptoDb = false)
|
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() {
|
override suspend fun clearCache() {
|
||||||
innerClient.clearCaches(innerSyncService)
|
innerClient.clearCaches(innerSyncService)
|
||||||
destroy()
|
destroy()
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
package io.element.android.libraries.matrix.test
|
package io.element.android.libraries.matrix.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
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.DeviceId
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
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 addRecentEmojiLambda: (String) -> Result<Unit> = { Result.success(Unit) },
|
||||||
private val markRoomAsFullyReadResult: (RoomId, EventId) -> Result<Unit> = { _, _ -> lambdaError() },
|
private val markRoomAsFullyReadResult: (RoomId, EventId) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||||
private val performDatabaseVacuumLambda: () -> Result<Unit> = { lambdaError() },
|
private val performDatabaseVacuumLambda: () -> Result<Unit> = { lambdaError() },
|
||||||
|
private val getDatabaseSizesLambda: () -> Result<SdkStoreSizes> = { lambdaError() },
|
||||||
) : MatrixClient {
|
) : MatrixClient {
|
||||||
var setDisplayNameCalled: Boolean = false
|
var setDisplayNameCalled: Boolean = false
|
||||||
private set
|
private set
|
||||||
|
|
@ -184,6 +186,10 @@ class FakeMatrixClient(
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun getDatabaseSizes(): Result<SdkStoreSizes> {
|
||||||
|
return getDatabaseSizesLambda()
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun clearCache() = simulateLongTask {
|
override suspend fun clearCache() = simulateLongTask {
|
||||||
clearCacheLambda()
|
clearCacheLambda()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue