Skip to content

Commit 3a33db0

Browse files
committed
fix: 修复没有标记取消状态的Item
1 parent a0218a0 commit 3a33db0

File tree

3 files changed

+47
-10
lines changed

3 files changed

+47
-10
lines changed

core/src/main/kotlin/io/github/shoaky/sourcedownloader/core/processor/CoreProcessContext.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class CoreProcessContext(
2020
val stat: ProcessStat = ProcessStat(processName)
2121
private val currentProcessItemPathsMapping: Multimap<CoreItemContent, Path> = ArrayListMultimap.create()
2222
private val processedItems: MutableList<SourceItem> = mutableListOf()
23+
private val cancelItems: MutableSet<SourceItem> = mutableSetOf()
2324
private var hasError: Boolean = false
2425
override fun processor(): ProcessorInfo {
2526
return processor
@@ -64,4 +65,12 @@ class CoreProcessContext(
6465
.map { it.key }
6566
}
6667

68+
fun cancelItem(sourceItem: SourceItem) {
69+
cancelItems.add(sourceItem)
70+
}
71+
72+
fun isItemCanceled(sourceItem: SourceItem): Boolean {
73+
return cancelItems.contains(sourceItem)
74+
}
75+
6776
}

core/src/main/kotlin/io/github/shoaky/sourcedownloader/core/processor/SourceProcessor.kt

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ class SourceProcessor(
754754
log.debug("Processor:'{}' {} filtered item:{}", name, filterBy::class.simpleName, sourceItem)
755755
return ProcessingContent(name, itemContent).copy(status = FILTERED)
756756
}
757-
757+
val itemContext = ItemContext()
758758
val mover = this.selectUpdateStatusMover()
759759
var replaceFiles: List<CoreFileContent> = emptyList()
760760
processLock.lock {
@@ -771,16 +771,26 @@ class SourceProcessor(
771771
secondaryFileMover.preoccupiedTargetPath(sourceItem, targetPaths)
772772
replaceFiles = identifyFilesToReplace(itemContent)
773773
context.addItemPaths(itemContent, targetPaths)
774-
}
775774

776-
val (shouldDownload, contentStatus) = probeContentStatus(itemContent, replaceFiles)
777-
log.trace(
778-
"Processor:'{}' item:{}, shouldDownload: {}, contentStatus:{}",
779-
name, sourceItem, shouldDownload, contentStatus
780-
)
781-
val processingContent = postProcessingContent(
782-
ProcessingContent(name, itemContent).copy(status = contentStatus)
783-
)
775+
val (shouldDownload, contentStatus) = probeContentStatus(itemContent, replaceFiles)
776+
itemContext.shouldDownload = shouldDownload
777+
itemContext.status = contentStatus
778+
if (context.isItemCanceled(sourceItem)) {
779+
itemContext.status = CANCELLED
780+
}
781+
log.trace(
782+
"Processor:'{}' item:{}, shouldDownload: {}, contentStatus:{}",
783+
name, sourceItem, shouldDownload, contentStatus
784+
)
785+
val processingContent = postProcessingContent(
786+
ProcessingContent(name, itemContent).copy(status = itemContext.status)
787+
)
788+
itemContext.content = processingContent
789+
}
790+
val shouldDownload = itemContext.shouldDownload
791+
val contentStatus = itemContext.status
792+
val processingContent = itemContext.content
793+
checkNotNull(processingContent)
784794

785795
if (shouldDownload) {
786796
val success = doDownload(processingContent, replaceFiles)
@@ -860,6 +870,7 @@ class SourceProcessor(
860870
content.fileContents.filter { it.targetPath() == existTargetPath }
861871
.onEach { it.status = FileContentStatus.REPLACED }
862872
cancelItem(content.sourceItem, fileContent, discardedItems)
873+
context.cancelItem(content.sourceItem)
863874
}
864875
}
865876
}
@@ -966,6 +977,12 @@ class SourceProcessor(
966977
}
967978
}
968979

980+
private data class ItemContext(
981+
var shouldDownload: Boolean = false,
982+
var status: ProcessingContent.Status = NO_FILES,
983+
var content: ProcessingContent? = null
984+
)
985+
969986
private fun invokeListeners(
970987
mode: ListenerMode = ListenerMode.EACH,
971988
inProcess: Boolean = true,

plugins/telegram4j-plugin/build.gradle.kts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ plugins {
22
`java-library`
33
}
44

5+
// repositories {
6+
// rootProject.repositories.add(
7+
// maven {
8+
// url = uri("https://mvn.mchv.eu/repository/mchv/")
9+
// }
10+
// )
11+
// }
12+
513
dependencies {
614
implementation(project(":sdk"))
715
implementation(project(":common"))
@@ -12,4 +20,7 @@ dependencies {
1220

1321
implementation(libs.zxing.core)
1422
implementation(libs.telegram4j)
23+
// implementation(platform("it.tdlight:tdlight-java-bom:3.4.0+td.1.8.26"))
24+
// implementation("it.tdlight:tdlight-java")
25+
// implementation(group = "it.tdlight", name = "tdlight-natives", classifier = "macos_arm64")
1526
}

0 commit comments

Comments
 (0)