foreground task для фоновой синхронизации
This commit is contained in:
@@ -6,6 +6,7 @@ import androidx.work.CoroutineWorker
|
||||
import androidx.work.WorkerParameters
|
||||
import com.github.nullptroma.wallenc.domain.tasks.StorageSyncTriggerReason
|
||||
import com.github.nullptroma.wallenc.usecases.RunStorageSyncUseCase
|
||||
import com.github.nullptroma.wallenc.usecases.StorageSyncRunOutcome
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
@@ -19,13 +20,19 @@ class StorageSyncWorker @AssistedInject constructor(
|
||||
|
||||
override suspend fun doWork(): Result {
|
||||
Timber.d("Periodic storage sync started (attempt %d)", runAttemptCount)
|
||||
return runCatching {
|
||||
syncRunner.runBlocking(StorageSyncTriggerReason.Background)
|
||||
Timber.d("Periodic storage sync finished")
|
||||
Result.success()
|
||||
}.getOrElse { error ->
|
||||
Timber.w(error, "Periodic storage sync failed")
|
||||
Result.retry()
|
||||
return when (val outcome = syncRunner.enqueueAndAwait(StorageSyncTriggerReason.Background)) {
|
||||
StorageSyncRunOutcome.SkippedAlreadyRunning -> {
|
||||
Timber.d("Periodic storage sync skipped — already running")
|
||||
Result.success()
|
||||
}
|
||||
StorageSyncRunOutcome.Completed -> {
|
||||
Timber.d("Periodic storage sync finished")
|
||||
Result.success()
|
||||
}
|
||||
is StorageSyncRunOutcome.Failed -> {
|
||||
Timber.w(outcome.error, "Periodic storage sync failed")
|
||||
Result.retry()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user