Minor cleanup
This commit is contained in:
@@ -37,8 +37,6 @@ import exh.util.ignore
|
||||
import exh.util.wifiManager
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.FormBody
|
||||
@@ -60,8 +58,6 @@ class FavoritesSyncHelper(val context: Context) {
|
||||
|
||||
private val prefs: PreferencesHelper by injectLazy()
|
||||
|
||||
private val scope = CoroutineScope(Job() + Dispatchers.Main)
|
||||
|
||||
private val exh by lazy {
|
||||
Injekt.get<SourceManager>().get(EXH_SOURCE_ID) as? EHentai
|
||||
?: EHentai(0, true, context)
|
||||
@@ -81,7 +77,7 @@ class FavoritesSyncHelper(val context: Context) {
|
||||
val status: MutableStateFlow<FavoritesSyncStatus> = MutableStateFlow(FavoritesSyncStatus.Idle(context))
|
||||
|
||||
@Synchronized
|
||||
fun runSync() {
|
||||
fun runSync(scope: CoroutineScope) {
|
||||
if (status.value !is FavoritesSyncStatus.Idle) {
|
||||
return
|
||||
}
|
||||
@@ -407,10 +403,6 @@ class FavoritesSyncHelper(val context: Context) {
|
||||
|
||||
class IgnoredException : RuntimeException()
|
||||
|
||||
fun onDestroy() {
|
||||
scope.cancel()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val THROTTLE_WARN = 1.seconds
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
package exh.ui
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.UUID
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
import kotlin.coroutines.EmptyCoroutineContext
|
||||
|
||||
typealias LoadingHandle = String
|
||||
|
||||
/**
|
||||
* Class used to manage loader UIs
|
||||
*/
|
||||
class LoaderManager(parentContext: CoroutineContext = EmptyCoroutineContext) : CoroutineScope {
|
||||
override val coroutineContext = Dispatchers.Main + parentContext
|
||||
|
||||
private val openLoadingHandles = mutableListOf<LoadingHandle>()
|
||||
var loadingChangeListener: (suspend (newIsLoading: Boolean) -> Unit)? = null
|
||||
|
||||
fun openProgressBar(): LoadingHandle {
|
||||
val (handle, shouldUpdateLoadingStatus) = synchronized(this) {
|
||||
val handle = UUID.randomUUID().toString()
|
||||
openLoadingHandles += handle
|
||||
handle to (openLoadingHandles.size == 1)
|
||||
}
|
||||
|
||||
if (shouldUpdateLoadingStatus) {
|
||||
launch {
|
||||
updateLoadingStatus(true)
|
||||
}
|
||||
}
|
||||
|
||||
return handle
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun closeProgressBar(handle: LoadingHandle?) {
|
||||
if (handle == null) return
|
||||
|
||||
val shouldUpdateLoadingStatus = synchronized(this) {
|
||||
openLoadingHandles.remove(handle) && openLoadingHandles.isEmpty()
|
||||
}
|
||||
|
||||
if (shouldUpdateLoadingStatus) {
|
||||
launch {
|
||||
updateLoadingStatus(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun updateLoadingStatus(newStatus: Boolean) {
|
||||
loadingChangeListener?.invoke(newStatus)
|
||||
}
|
||||
}
|
||||
@@ -8,8 +8,7 @@ import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||
import exh.GalleryAddEvent
|
||||
import exh.GalleryAdder
|
||||
import exh.log.xLogE
|
||||
import exh.util.dropEmpty
|
||||
import exh.util.trimAll
|
||||
import exh.util.trimOrNull
|
||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.ensureActive
|
||||
@@ -30,25 +29,21 @@ class BatchAddPresenter : BasePresenter<BatchAddController>() {
|
||||
|
||||
fun addGalleries(context: Context, galleries: String) {
|
||||
eventFlow = MutableSharedFlow(1)
|
||||
val regex =
|
||||
"""[0-9]*?\.[a-z0-9]*?:""".toRegex()
|
||||
|
||||
val testedGalleries = if (regex.containsMatchIn(galleries)) {
|
||||
val splitGalleries = if (ehVisitedRegex.containsMatchIn(galleries)) {
|
||||
val url = if (preferences.enableExhentai().get()) {
|
||||
"https://exhentai.org/g/"
|
||||
} else {
|
||||
"https://e-hentai.org/g/"
|
||||
}
|
||||
regex.findAll(galleries).map { galleryKeys ->
|
||||
ehVisitedRegex.findAll(galleries).map { galleryKeys ->
|
||||
val linkParts = galleryKeys.value.split(".")
|
||||
url + linkParts[0] + "/" + linkParts[1].replace(":", "")
|
||||
}.joinToString(separator = "\n")
|
||||
}.toList()
|
||||
} else {
|
||||
galleries
|
||||
galleries.split("\n")
|
||||
.mapNotNull(String::trimOrNull)
|
||||
}
|
||||
val splitGalleries = testedGalleries.split("\n")
|
||||
.trimAll()
|
||||
.dropEmpty()
|
||||
|
||||
progressFlow.value = 0
|
||||
progressTotalFlow.value = splitGalleries.size
|
||||
@@ -92,5 +87,7 @@ class BatchAddPresenter : BasePresenter<BatchAddController>() {
|
||||
const val STATE_IDLE = 0
|
||||
const val STATE_INPUT_TO_PROGRESS = 1
|
||||
const val STATE_PROGRESS_TO_INPUT = 2
|
||||
|
||||
val ehVisitedRegex = """[0-9]*?\.[a-z0-9]*?:""".toRegex()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,13 +10,6 @@ fun String.removeArticles(): String {
|
||||
return replace(articleRegex, "")
|
||||
}
|
||||
|
||||
fun String.trimOrNull(): String? {
|
||||
val trimmed = trim()
|
||||
return trimmed.ifBlank { null }
|
||||
}
|
||||
fun String.trimOrNull() = trim().nullIfBlank()
|
||||
|
||||
fun String?.nullIfBlank(): String? = if (isNullOrBlank()) {
|
||||
null
|
||||
} else {
|
||||
this
|
||||
}
|
||||
fun String.nullIfBlank(): String? = ifBlank { null }
|
||||
|
||||
Reference in New Issue
Block a user