Улучшена фоновая синхронизация
This commit is contained in:
@@ -16,6 +16,7 @@ import com.github.nullptroma.wallenc.usecases.RenameStorageUseCase
|
||||
import com.github.nullptroma.wallenc.usecases.RunStorageSyncUseCase
|
||||
import com.github.nullptroma.wallenc.usecases.ManageStorageSyncGroupsUseCase
|
||||
import com.github.nullptroma.wallenc.usecases.StorageSyncEngine
|
||||
import com.github.nullptroma.wallenc.usecases.StorageSyncReadiness
|
||||
import com.github.nullptroma.wallenc.usecases.StorageFileManagementUseCase
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -104,10 +105,27 @@ class UseCasesModule {
|
||||
groupStore: IStorageSyncGroupStore,
|
||||
): ManageStorageSyncGroupsUseCase = ManageStorageSyncGroupsUseCase(groupStore)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideStorageSyncReadiness(
|
||||
vaultsManager: IVaultsManager,
|
||||
groupStore: IStorageSyncGroupStore,
|
||||
findStorageUseCase: FindStorageUseCase,
|
||||
): StorageSyncReadiness = StorageSyncReadiness(
|
||||
vaultsManager = vaultsManager,
|
||||
groupStore = groupStore,
|
||||
findStorageUseCase = findStorageUseCase,
|
||||
)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRunStorageSyncUseCase(
|
||||
orchestrator: ITaskOrchestrator,
|
||||
syncEngine: IStorageSyncEngine,
|
||||
): RunStorageSyncUseCase = RunStorageSyncUseCase(orchestrator, syncEngine)
|
||||
syncReadiness: StorageSyncReadiness,
|
||||
): RunStorageSyncUseCase = RunStorageSyncUseCase(
|
||||
orchestrator = orchestrator,
|
||||
syncEngine = syncEngine,
|
||||
syncReadiness = syncReadiness,
|
||||
)
|
||||
}
|
||||
@@ -29,7 +29,7 @@ class StorageSyncScheduler @Inject constructor(
|
||||
|
||||
WorkManager.getInstance(app).enqueueUniquePeriodicWork(
|
||||
StorageSyncWorker.UNIQUE_WORK_NAME,
|
||||
ExistingPeriodicWorkPolicy.KEEP,
|
||||
ExistingPeriodicWorkPolicy.UPDATE,
|
||||
request,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import androidx.work.WorkerParameters
|
||||
import com.github.nullptroma.wallenc.usecases.RunStorageSyncUseCase
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
|
||||
@HiltWorker
|
||||
class StorageSyncWorker @AssistedInject constructor(
|
||||
@@ -16,10 +17,13 @@ class StorageSyncWorker @AssistedInject constructor(
|
||||
) : CoroutineWorker(appContext, params) {
|
||||
|
||||
override suspend fun doWork(): Result {
|
||||
Timber.d("Periodic storage sync started (attempt %d)", runAttemptCount)
|
||||
return runCatching {
|
||||
syncRunner.runBlocking()
|
||||
Timber.d("Periodic storage sync finished")
|
||||
Result.success()
|
||||
}.getOrElse {
|
||||
}.getOrElse { error ->
|
||||
Timber.w(error, "Periodic storage sync failed")
|
||||
Result.retry()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user