Заголовок задачи синхронизации

This commit is contained in:
2026-05-22 00:20:49 +03:00
parent 233a716e47
commit 07d54b5996
9 changed files with 42 additions and 19 deletions

View File

@@ -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 {