This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
||||||
index ae55a0f..9f4338b 100644
|
index ae55a0f..58e1ee7 100644
|
||||||
--- a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
--- a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
||||||
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/pager/pages/MangaPageFetcher.kt
|
||||||
@@ -15,21 +15,26 @@ import coil3.request.Options
|
@@ -15,21 +15,26 @@ import coil3.request.Options
|
||||||
@@ -168,7 +168,7 @@ index ae55a0f..9f4338b 100644
|
|||||||
@MangaHttpClient private val okHttpClient: OkHttpClient,
|
@MangaHttpClient private val okHttpClient: OkHttpClient,
|
||||||
@PageCache private val pagesCache: LocalStorageCache,
|
@PageCache private val pagesCache: LocalStorageCache,
|
||||||
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt b/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt b/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
||||||
index 8227b2a..742341e 100644
|
index 8227b2a..a6b3bb5 100644
|
||||||
--- a/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
--- a/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
||||||
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/download/ui/worker/DownloadWorker.kt
|
||||||
@@ -91,6 +91,7 @@ import okio.use
|
@@ -91,6 +91,7 @@ import okio.use
|
||||||
@@ -179,18 +179,20 @@ index 8227b2a..742341e 100644
|
|||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.util.ifNullOrEmpty
|
import org.koitharu.kotatsu.parsers.util.ifNullOrEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||||
@@ -125,6 +126,10 @@ class DownloadWorker @AssistedInject constructor(
|
@@ -125,6 +126,12 @@ class DownloadWorker @AssistedInject constructor(
|
||||||
private val notificationFactory = notificationFactoryFactory.create(uuid = params.id, isSilent = task.isSilent)
|
private val notificationFactory = notificationFactoryFactory.create(uuid = params.id, isSilent = task.isSilent)
|
||||||
private val notificationManager = appContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
private val notificationManager = appContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
private val bandwidthLimiter = BandwidthLimiter { settings.downloadBandwidthLimit * 1024 }
|
private val bandwidthLimiter = BandwidthLimiter { settings.downloadBandwidthLimit * 1024 }
|
||||||
+ private val niaddOkHttp = okHttp.newBuilder()
|
+ private val niaddOkHttp = okHttp.newBuilder()
|
||||||
+ .followRedirects(false)
|
+ .followRedirects(false)
|
||||||
+ .followSslRedirects(false)
|
+ .followSslRedirects(false)
|
||||||
|
+ .readTimeout(NIADD_RANGE_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS)
|
||||||
|
+ .callTimeout(NIADD_RANGE_CALL_TIMEOUT_SECONDS, TimeUnit.SECONDS)
|
||||||
+ .build()
|
+ .build()
|
||||||
|
|
||||||
@Volatile
|
@Volatile
|
||||||
private var lastPublishedState: DownloadState? = null
|
private var lastPublishedState: DownloadState? = null
|
||||||
@@ -427,6 +432,13 @@ class DownloadWorker @AssistedInject constructor(
|
@@ -427,6 +434,13 @@ class DownloadWorker @AssistedInject constructor(
|
||||||
}
|
}
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
@@ -204,7 +206,7 @@ index 8227b2a..742341e 100644
|
|||||||
val request = PageLoader.createPageRequest(url, source)
|
val request = PageLoader.createPageRequest(url, source)
|
||||||
slowdownDispatcher.delay(source)
|
slowdownDispatcher.delay(source)
|
||||||
return imageProxyInterceptor.interceptPageRequest(request, okHttp)
|
return imageProxyInterceptor.interceptPageRequest(request, okHttp)
|
||||||
@@ -450,6 +462,117 @@ class DownloadWorker @AssistedInject constructor(
|
@@ -450,6 +464,117 @@ class DownloadWorker @AssistedInject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,18 +324,36 @@ index 8227b2a..742341e 100644
|
|||||||
private fun File.createTempFile(ext: String?) = File(
|
private fun File.createTempFile(ext: String?) = File(
|
||||||
this,
|
this,
|
||||||
buildString {
|
buildString {
|
||||||
@@ -633,6 +756,9 @@ class DownloadWorker @AssistedInject constructor(
|
@@ -633,6 +758,11 @@ class DownloadWorker @AssistedInject constructor(
|
||||||
|
|
||||||
const val MAX_FAILSAFE_ATTEMPTS = 2
|
const val MAX_FAILSAFE_ATTEMPTS = 2
|
||||||
const val MAX_PAGES_PARALLELISM = 4
|
const val MAX_PAGES_PARALLELISM = 4
|
||||||
+ private const val NIADD_RANGE_CHUNK_SIZE = 16L * 1024L
|
+ private const val NIADD_RANGE_CHUNK_SIZE = 16L * 1024L
|
||||||
|
+ private const val NIADD_RANGE_READ_TIMEOUT_SECONDS = 6L
|
||||||
|
+ private const val NIADD_RANGE_CALL_TIMEOUT_SECONDS = 8L
|
||||||
+ private val NIADD_CONTENT_RANGE_REGEX = Regex("""bytes (\d+)-(\d+)/(\d+)""")
|
+ private val NIADD_CONTENT_RANGE_REGEX = Regex("""bytes (\d+)-(\d+)/(\d+)""")
|
||||||
+ private val NIADD_DOWNLOAD_SEMAPHORE = Semaphore(2)
|
+ private val NIADD_DOWNLOAD_SEMAPHORE = Semaphore(2)
|
||||||
const val DOWNLOAD_ERROR_DELAY = 2_000L
|
const val DOWNLOAD_ERROR_DELAY = 2_000L
|
||||||
const val MAX_RETRY_DELAY = 7_200_000L // 2 hours
|
const val MAX_RETRY_DELAY = 7_200_000L // 2 hours
|
||||||
const val TAG = "download"
|
const val TAG = "download"
|
||||||
|
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
||||||
|
index b6184a5..8be5f76 100644
|
||||||
|
--- a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
||||||
|
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
||||||
|
@@ -33,7 +33,10 @@ class DetectReaderModeUseCase @Inject constructor(
|
||||||
|
suspend operator fun invoke(manga: Manga, state: ReaderState?): ReaderMode {
|
||||||
|
dataRepository.getReaderMode(manga.id)?.let { return it }
|
||||||
|
val defaultMode = settings.defaultReaderMode
|
||||||
|
- if (!settings.isReaderModeDetectionEnabled || defaultMode == ReaderMode.WEBTOON) {
|
||||||
|
+ if (
|
||||||
|
+ manga.source == org.koitharu.kotatsu.parsers.model.MangaParserSource.NINEMANGA_RU ||
|
||||||
|
+ !settings.isReaderModeDetectionEnabled || defaultMode == ReaderMode.WEBTOON
|
||||||
|
+ ) {
|
||||||
|
return defaultMode
|
||||||
|
}
|
||||||
|
val chapter = state?.let { manga.findChapterById(it.chapterId) }
|
||||||
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
||||||
index 18d203d..02b1653 100644
|
index 18d203d..63b59e5 100644
|
||||||
--- a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
--- a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
||||||
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/PageLoader.kt
|
||||||
@@ -30,6 +30,7 @@ import io.github.landwarderer.futon.core.prefs.AppSettings
|
@@ -30,6 +30,7 @@ import io.github.landwarderer.futon.core.prefs.AppSettings
|
||||||
@@ -515,18 +535,3 @@ index 18d203d..02b1653 100644
|
|||||||
private const val PREFETCH_LIMIT_DEFAULT = 6
|
private const val PREFETCH_LIMIT_DEFAULT = 6
|
||||||
private const val PREFETCH_MIN_RAM_MB = 80L
|
private const val PREFETCH_MIN_RAM_MB = 80L
|
||||||
|
|
||||||
diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
|
||||||
--- a/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
|
||||||
+++ b/app/src/main/kotlin/io/github/landwarderer/futon/reader/domain/DetectReaderModeUseCase.kt
|
|
||||||
@@ -32,7 +32,10 @@ class DetectReaderModeUseCase @Inject constructor(
|
|
||||||
suspend operator fun invoke(manga: Manga, state: ReaderState?): ReaderMode {
|
|
||||||
dataRepository.getReaderMode(manga.id)?.let { return it }
|
|
||||||
val defaultMode = settings.defaultReaderMode
|
|
||||||
- if (!settings.isReaderModeDetectionEnabled || defaultMode == ReaderMode.WEBTOON) {
|
|
||||||
+ if (
|
|
||||||
+ manga.source == org.koitharu.kotatsu.parsers.model.MangaParserSource.NINEMANGA_RU ||
|
|
||||||
+ !settings.isReaderModeDetectionEnabled || defaultMode == ReaderMode.WEBTOON
|
|
||||||
+ ) {
|
|
||||||
return defaultMode
|
|
||||||
}
|
|
||||||
val chapter = state?.let { manga.findChapterById(it.chapterId) }
|
|
||||||
|
|||||||
Reference in New Issue
Block a user