Make sure we schedule the vacuum task only if there isn't an existing one

This commit is contained in:
Jorge Martín 2025-12-09 13:50:21 +01:00 committed by Jorge Martin Espinosa
parent 95cded80a6
commit 2e88815e1b
2 changed files with 13 additions and 4 deletions

View file

@ -15,6 +15,7 @@ import dev.zacsweers.metro.AssistedInject
import io.element.android.libraries.di.annotations.ApplicationContext
import io.element.android.libraries.matrix.api.MatrixClientProvider
import io.element.android.libraries.matrix.api.core.SessionId
import timber.log.Timber
@AssistedInject
class VacuumDatabaseWorker(
@ -27,12 +28,19 @@ class VacuumDatabaseWorker(
}
override suspend fun doWork(): Result {
Timber.d("Starting database vacuuming...")
val sessionId = inputData.getString(SESSION_ID_PARAM)?.let(::SessionId) ?: return Result.failure()
val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return Result.failure()
return client.performDatabaseVacuum()
.fold(
onSuccess = { Result.success() },
onFailure = { Result.failure() }
onSuccess = {
Timber.d("Database vacuuming finished successfully")
Result.success()
},
onFailure = {
Timber.e(it, "Database vacuuming failed")
Result.failure()
}
)
}
}