From b064b35c93d783991a68242f80db0f2bc0a3a75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Tue, 16 Dec 2025 16:51:05 +0100 Subject: [PATCH] Create `GetDatabaseSizesUseCase` so we don't have to expose the while `MatrixClient` to get these values --- .../api/analytics/GetDatabaseSizesUseCase.kt | 14 ++++++++++ .../DefaultGetDatabaseSizesUseCase.kt | 27 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/analytics/GetDatabaseSizesUseCase.kt create mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/analytics/DefaultGetDatabaseSizesUseCase.kt diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/analytics/GetDatabaseSizesUseCase.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/analytics/GetDatabaseSizesUseCase.kt new file mode 100644 index 0000000000..ab11374116 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/analytics/GetDatabaseSizesUseCase.kt @@ -0,0 +1,14 @@ +/* + * 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.matrix.api.core.SessionId + +fun interface GetDatabaseSizesUseCase { + suspend operator fun invoke(sessionId: SessionId): Result +} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/analytics/DefaultGetDatabaseSizesUseCase.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/analytics/DefaultGetDatabaseSizesUseCase.kt new file mode 100644 index 0000000000..8973483132 --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/analytics/DefaultGetDatabaseSizesUseCase.kt @@ -0,0 +1,27 @@ +/* + * 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.impl.analytics + +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.matrix.api.MatrixClientProvider +import io.element.android.libraries.matrix.api.analytics.GetDatabaseSizesUseCase +import io.element.android.libraries.matrix.api.analytics.SdkStoreSizes +import io.element.android.libraries.matrix.api.core.SessionId + +@ContributesBinding(AppScope::class) +class DefaultGetDatabaseSizesUseCase( + private val clientProvider: Lazy, +) : GetDatabaseSizesUseCase { + override suspend fun invoke(sessionId: SessionId): Result { + val client = clientProvider.value.getOrNull(sessionId) + ?: return Result.failure(IllegalArgumentException("No MatrixClient for session $sessionId")) + + return client.getDatabaseSizes() + } +}