mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
Add global search backfill worker (#7860)
* Add search backfill worker This will run on background at most once an hour while the device has internet connectivity and the device is charging and start back-paginating through the user's rooms to make sure the search results are populated. It'll run for the maximum time the default workers allow, 10 minutes. * Create `RustMatrixClient.Factory` AssistedFactory to help with DI and add `SearchBackfillService` * Start search backfill when entering the search screen, just once. This should help getting initial search results if none or few are found at first
This commit is contained in:
committed by
GitHub
parent
9805422a8a
commit
3fe0e09e3c
+3
@@ -40,6 +40,7 @@ import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryServic
|
||||
import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
||||
import io.element.android.libraries.matrix.api.scanner.ContentScanner
|
||||
import io.element.android.libraries.matrix.api.search.MessageSearchService
|
||||
import io.element.android.libraries.matrix.api.search.SearchBackfillService
|
||||
import io.element.android.libraries.matrix.api.spaces.SpaceService
|
||||
import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion
|
||||
import io.element.android.libraries.matrix.api.sync.SyncService
|
||||
@@ -57,6 +58,7 @@ import io.element.android.libraries.matrix.test.pushers.FakePushersService
|
||||
import io.element.android.libraries.matrix.test.roomdirectory.FakeRoomDirectoryService
|
||||
import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService
|
||||
import io.element.android.libraries.matrix.test.search.FakeMessageSearchService
|
||||
import io.element.android.libraries.matrix.test.search.FakeSearchBackfillService
|
||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
||||
import io.element.android.libraries.matrix.test.sync.FakeSyncService
|
||||
import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService
|
||||
@@ -131,6 +133,7 @@ class FakeMatrixClient(
|
||||
private val markRoomAsFullyReadResult: (RoomId, EventId) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||
private val markAllRoomsAsReadResult: () -> Result<Unit> = { Result.success(Unit) },
|
||||
private val performDatabaseVacuumLambda: () -> Result<Unit> = { lambdaError() },
|
||||
override val searchBackfillService: SearchBackfillService = FakeSearchBackfillService(),
|
||||
private val getDatabaseSizesLambda: () -> Result<SdkStoreSizes> = { lambdaError() },
|
||||
private val resetWellKnownConfigLambda: () -> Result<Unit> = { lambdaError() },
|
||||
private val enableAutomaticCallStatusLambda: (Boolean) -> Unit = { },
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (c) 2026 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.test
|
||||
|
||||
import io.element.android.libraries.matrix.api.SdkPendingTask
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
|
||||
class FakeSdkPendingTask(
|
||||
private val isRunningLambda: () -> Boolean = { lambdaError() },
|
||||
private val closeLambda: () -> Unit = { lambdaError() },
|
||||
) : SdkPendingTask {
|
||||
override fun isRunning(): Boolean = isRunningLambda()
|
||||
|
||||
override fun close() = closeLambda()
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2026 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.test.search
|
||||
|
||||
import io.element.android.libraries.matrix.api.SdkPendingTask
|
||||
import io.element.android.libraries.matrix.api.search.SearchBackfillService
|
||||
import io.element.android.libraries.matrix.api.search.SearchBackfillStrategy
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
|
||||
class FakeSearchBackfillService(
|
||||
private val schedulePeriodicSearchBackfillLambda: (SearchBackfillStrategy) -> Result<Unit> = { lambdaError() },
|
||||
private val cancelPeriodicSearchBackfillLambda: () -> Unit = { lambdaError() },
|
||||
private val startSearchBackfillLambda: (SearchBackfillStrategy) -> Result<SdkPendingTask> = { lambdaError() },
|
||||
private val isSearchBackfillRunningLambda: () -> Boolean = { false },
|
||||
private val cancelSearchBackfillLambda: () -> Result<Unit> = { lambdaError() },
|
||||
) : SearchBackfillService {
|
||||
override suspend fun schedulePeriodicSearchBackfill(strategy: SearchBackfillStrategy): Result<Unit> {
|
||||
return schedulePeriodicSearchBackfillLambda(strategy)
|
||||
}
|
||||
|
||||
override fun cancelPeriodicSearchBackfill() {
|
||||
cancelPeriodicSearchBackfillLambda()
|
||||
}
|
||||
|
||||
override fun startSearchBackfill(strategy: SearchBackfillStrategy): Result<SdkPendingTask> {
|
||||
return startSearchBackfillLambda(strategy)
|
||||
}
|
||||
|
||||
override fun isSearchBackfillRunning(): Boolean {
|
||||
return isSearchBackfillRunningLambda()
|
||||
}
|
||||
|
||||
override fun cancelSearchBackfill(): Result<Unit> {
|
||||
return cancelSearchBackfillLambda()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user