Refactor and cleanup
This commit is contained in:
@@ -80,7 +80,7 @@ class GalleryAdder {
|
||||
}
|
||||
|
||||
// Map URL to manga URL
|
||||
val realUrl = try {
|
||||
val realMangaUrl = try {
|
||||
source.mapUrlToMangaUrl(uri)
|
||||
} catch (e: Exception) {
|
||||
logger.e(context.getString(R.string.gallery_adder_uri_map_to_manga_error), e)
|
||||
@@ -88,18 +88,18 @@ class GalleryAdder {
|
||||
} ?: return GalleryAddEvent.Fail.UnknownType(url, context)
|
||||
|
||||
// Clean URL
|
||||
val cleanedUrl = try {
|
||||
source.cleanMangaUrl(realUrl)
|
||||
val cleanedMangaUrl = try {
|
||||
source.cleanMangaUrl(realMangaUrl)
|
||||
} catch (e: Exception) {
|
||||
logger.e(context.getString(R.string.gallery_adder_uri_clean_error), e)
|
||||
null
|
||||
} ?: return GalleryAddEvent.Fail.UnknownType(url, context)
|
||||
|
||||
// Use manga in DB if possible, otherwise, make a new manga
|
||||
val manga = db.getManga(cleanedUrl, source.id).executeOnIO()
|
||||
val manga = db.getManga(cleanedMangaUrl, source.id).executeOnIO()
|
||||
?: Manga.create(source.id).apply {
|
||||
this.url = cleanedUrl
|
||||
title = realUrl
|
||||
this.url = cleanedMangaUrl
|
||||
title = realMangaUrl
|
||||
}
|
||||
|
||||
// Insert created manga if not in DB before fetching details
|
||||
@@ -163,7 +163,8 @@ sealed class GalleryAddEvent {
|
||||
class Success(
|
||||
override val galleryUrl: String,
|
||||
val manga: Manga,
|
||||
val context: Context
|
||||
val context: Context,
|
||||
val chapter: Chapter? = null
|
||||
) : GalleryAddEvent() {
|
||||
override val galleryTitle = manga.title
|
||||
override val logMessage = context.getString(R.string.batch_add_success_log_message, galleryTitle)
|
||||
|
||||
@@ -16,7 +16,6 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.singleOrNull
|
||||
import reactivecircus.flowbinding.android.view.clicks
|
||||
|
||||
class MangaDexFabHeaderAdapter(val controller: Controller, val source: CatalogueSource) :
|
||||
@@ -46,7 +45,7 @@ class MangaDexFabHeaderAdapter(val controller: Controller, val source: Catalogue
|
||||
.launchIn(scope)
|
||||
binding.mangadexRandom.clicks()
|
||||
.onEach {
|
||||
(source as? RandomMangaSource)?.fetchRandomMangaUrl()?.singleOrNull()?.let { randomMangaId ->
|
||||
(source as? RandomMangaSource)?.fetchRandomMangaUrl()?.let { randomMangaId ->
|
||||
controller.router.replaceTopController(BrowseSourceController(source, randomMangaId).withFadeTransaction())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package exh.md.follows
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.Pager
|
||||
import eu.kanade.tachiyomi.util.lang.runAsObservable
|
||||
import rx.Observable
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
import rx.schedulers.Schedulers
|
||||
@@ -13,7 +14,7 @@ import rx.schedulers.Schedulers
|
||||
class MangaDexFollowsPager(val source: MangaDex) : Pager() {
|
||||
|
||||
override fun requestNext(): Observable<MangasPage> {
|
||||
return source.fetchFollows()
|
||||
return runAsObservable({ source.fetchFollows() })
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnNext { onPageReceived(it) }
|
||||
|
||||
@@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.network.asObservable
|
||||
import eu.kanade.tachiyomi.network.await
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.model.MetadataMangasPage
|
||||
@@ -26,17 +25,16 @@ import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import rx.Observable
|
||||
|
||||
class FollowsHandler(val client: OkHttpClient, val headers: Headers, val preferences: PreferencesHelper, private val useLowQualityCovers: Boolean) {
|
||||
|
||||
/**
|
||||
* fetch follows by page
|
||||
*/
|
||||
fun fetchFollows(): Observable<MangasPage> {
|
||||
suspend fun fetchFollows(): MangasPage {
|
||||
return client.newCall(followsListRequest())
|
||||
.asObservable()
|
||||
.map { response ->
|
||||
.await()
|
||||
.let { response ->
|
||||
followsParseMangaPage(response)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,6 @@ import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import exh.md.utils.MdUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.CacheControl
|
||||
import okhttp3.Headers
|
||||
@@ -95,10 +93,10 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
|
||||
}
|
||||
}
|
||||
|
||||
fun fetchRandomMangaId(): Flow<String> {
|
||||
return flow {
|
||||
suspend fun fetchRandomMangaId(): String {
|
||||
return withContext(Dispatchers.IO) {
|
||||
val response = client.newCall(randomMangaRequest()).await()
|
||||
emit(ApiMangaParser(langs).randomMangaIdParse(response))
|
||||
ApiMangaParser(langs).randomMangaIdParse(response)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user