Skip H@H on force retry (#762)

* Skip H@H on force retry

* Refine
This commit is contained in:
FooIbar authored and GitHub committed 2024-02-19 08:11:57 +00:00
1 parent dd62571943
commit f9cb3d769f
1 file changed
+9 -3
@@ -286,7 +286,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
val state = getPageState(index)
// Fix state for force
if (force && (state == STATE_FINISHED || state == STATE_FAILED) || state == STATE_FAILED) {
if (force && state == STATE_FINISHED || state == STATE_FAILED) {
// Update state to none at once
updatePageState(index, STATE_NONE)
}
@@ -540,12 +540,13 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
val state = mPageStateArray[index]
if (!force && state == STATE_FINISHED) return
val currentJob = mFetcherJobMap[index]
val skipHath = force && !orgImg && currentJob?.isActive == true
if (force) currentJob?.cancel(CancellationException(FORCE_RETRY))
if (currentJob?.isActive != true) {
mFetcherJobMap[index] = launch {
runCatching {
mSemaphore.withPermit {
doInJob(index, force, orgImg)
doInJob(index, force, orgImg, skipHath)
}
}.onFailure {
if (it is CancellationException) {
@@ -572,7 +573,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
decoder.launch(index)
}
private suspend fun doInJob(index: Int, force: Boolean, orgImg: Boolean) {
private suspend fun doInJob(index: Int, force: Boolean, orgImg: Boolean, skipHath: Boolean) {
suspend fun getPToken(index: Int): String? {
if (index !in 0 until size) return null
return mSpiderInfo.pTokenMap[index].takeIf { it != TOKEN_FAILED }
@@ -653,6 +654,11 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
}
}
if (retries == 0 && skipHath) {
forceHtml = true
return@repeat
}
val targetImageUrl: String?
val referer: String?