Заголовок задачи синхронизации
This commit is contained in:
@@ -3,6 +3,7 @@ package com.github.nullptroma.wallenc.usecases
|
||||
import com.github.nullptroma.wallenc.domain.errors.toWallencException
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorageSyncEngine
|
||||
import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator
|
||||
import com.github.nullptroma.wallenc.domain.tasks.IStorageSyncTaskTitleFormatter
|
||||
import com.github.nullptroma.wallenc.domain.tasks.StorageSyncTriggerReason
|
||||
import com.github.nullptroma.wallenc.domain.tasks.TaskId
|
||||
import com.github.nullptroma.wallenc.domain.tasks.TaskLogKey
|
||||
@@ -21,6 +22,7 @@ class RunStorageSyncUseCase @Inject constructor(
|
||||
private val orchestrator: ITaskOrchestrator,
|
||||
private val syncEngine: IStorageSyncEngine,
|
||||
private val syncReadiness: StorageSyncReadiness,
|
||||
private val taskTitleFormatter: IStorageSyncTaskTitleFormatter,
|
||||
) {
|
||||
private val running = AtomicBoolean(false)
|
||||
|
||||
@@ -31,18 +33,17 @@ class RunStorageSyncUseCase @Inject constructor(
|
||||
val activeSyncTaskId: StateFlow<TaskId?> = _activeSyncTaskId.asStateFlow()
|
||||
|
||||
/**
|
||||
* @param displayTitle заголовок задачи в UI (локализованный на стороне вызова)
|
||||
* @param reason источник запуска — попадает в лог пайплайна
|
||||
* @param reason источник запуска — заголовок задачи и лог пайплайна
|
||||
* @return false, если синхронизация уже в очереди или выполняется — новая задача не создана
|
||||
*/
|
||||
fun enqueue(displayTitle: String, reason: StorageSyncTriggerReason): Boolean {
|
||||
fun enqueue(reason: StorageSyncTriggerReason): Boolean {
|
||||
if (!running.compareAndSet(false, true)) {
|
||||
return false
|
||||
}
|
||||
_syncRunning.value = true
|
||||
try {
|
||||
val taskId = orchestrator.enqueue(
|
||||
title = displayTitle,
|
||||
title = taskTitleFormatter.format(reason),
|
||||
dispatcher = Dispatchers.IO,
|
||||
work = { ctx ->
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user