Mangadex tweaks, fix global update crashing sometimes
This commit is contained in:
parent
dcca19e6b8
commit
7a834ea9f4
@ -6,6 +6,7 @@ import android.content.Intent
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
@ -448,13 +449,17 @@ class LibraryUpdateService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
if (source.getMainSource() is MangaDex) {
|
if (source.getMainSource() is MangaDex && trackManager.mdList.isLogged) {
|
||||||
|
try {
|
||||||
val tracks = db.getTracks(manga).executeAsBlocking()
|
val tracks = db.getTracks(manga).executeAsBlocking()
|
||||||
if (tracks.isEmpty() || tracks.all { it.sync_id != TrackManager.MDLIST }) {
|
if (tracks.isEmpty() || tracks.all { it.sync_id != TrackManager.MDLIST }) {
|
||||||
var track = trackManager.mdList.createInitialTracker(manga)
|
var track = trackManager.mdList.createInitialTracker(manga)
|
||||||
track = runBlocking { trackManager.mdList.refresh(track).awaitSingle() }
|
track = runBlocking { trackManager.mdList.refresh(track).awaitSingle() }
|
||||||
db.insertTrack(track).executeAsBlocking()
|
db.insertTrack(track).executeAsBlocking()
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
XLog.e(e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
|
@ -131,6 +131,4 @@ class MdList(private val context: Context, id: Int) : TrackService(id) {
|
|||||||
override fun search(query: String): Observable<List<TrackSearch>> = throw Exception("not used")
|
override fun search(query: String): Observable<List<TrackSearch>> = throw Exception("not used")
|
||||||
|
|
||||||
override fun login(username: String, password: String): Completable = throw Exception("not used")
|
override fun login(username: String, password: String): Completable = throw Exception("not used")
|
||||||
|
|
||||||
override val isLogged = mdex?.isLogged() ?: false
|
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@ import okhttp3.Response
|
|||||||
import rx.Observable
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
class MangaDex(delegate: HttpSource, val context: Context) :
|
class MangaDex(delegate: HttpSource, val context: Context) :
|
||||||
DelegatedHttpSource(delegate),
|
DelegatedHttpSource(delegate),
|
||||||
@ -79,9 +80,12 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
|
|
||||||
override val matchingHosts: List<String> = listOf("mangadex.org", "www.mangadex.org")
|
override val matchingHosts: List<String> = listOf("mangadex.org", "www.mangadex.org")
|
||||||
|
|
||||||
|
val preferences: PreferencesHelper by injectLazy()
|
||||||
|
val trackManager: TrackManager by injectLazy()
|
||||||
|
|
||||||
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> =
|
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> =
|
||||||
urlImportFetchSearchManga(context, query) {
|
urlImportFetchSearchManga(context, query) {
|
||||||
ImportIdToMdId(query) {
|
importIdToMdId(query) {
|
||||||
super.fetchSearchManga(page, query, filters)
|
super.fetchSearchManga(page, query, filters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,11 +101,11 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||||
return MangaHandler(client, headers, listOf(mdLang), Injekt.get<PreferencesHelper>().mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga)
|
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
|
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
|
||||||
return MangaHandler(client, headers, listOf(mdLang), Injekt.get<PreferencesHelper>().mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga)
|
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExperimentalSerializationApi
|
@ExperimentalSerializationApi
|
||||||
@ -135,7 +139,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response) {
|
override fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response) {
|
||||||
ApiMangaParser(listOf(mdLang)).parseIntoMetadata(metadata, input, Injekt.get<PreferencesHelper>().mangaDexForceLatestCovers().get())
|
ApiMangaParser(listOf(mdLang)).parseIntoMetadata(metadata, input, preferences.mangaDexForceLatestCovers().get())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchFollows(): Observable<MangasPage> {
|
override fun fetchFollows(): Observable<MangasPage> {
|
||||||
@ -150,7 +154,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
|
|
||||||
override fun isLogged(): Boolean {
|
override fun isLogged(): Boolean {
|
||||||
val httpUrl = MdUtil.baseUrl.toHttpUrlOrNull()!!
|
val httpUrl = MdUtil.baseUrl.toHttpUrlOrNull()!!
|
||||||
return network.cookieManager.get(httpUrl).any { it.name == REMEMBER_ME }
|
return trackManager.mdList.isLogged && network.cookieManager.get(httpUrl).any { it.name == REMEMBER_ME }
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun login(
|
override suspend fun login(
|
||||||
@ -196,7 +200,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
val resultStr = result.body!!.string()
|
val resultStr = result.body!!.string()
|
||||||
if (resultStr.contains("success", true)) {
|
if (resultStr.contains("success", true)) {
|
||||||
network.cookieManager.remove(httpUrl)
|
network.cookieManager.remove(httpUrl)
|
||||||
Injekt.get<TrackManager>().mdList.logout()
|
trackManager.mdList.logout()
|
||||||
return@withContext true
|
return@withContext true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,7 +241,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
return MangaHandler(client, headers, listOf(mdLang)).fetchRandomMangaId()
|
return MangaHandler(client, headers, listOf(mdLang)).fetchRandomMangaId()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ImportIdToMdId(query: String, fail: () -> Observable<MangasPage>): Observable<MangasPage> =
|
private fun importIdToMdId(query: String, fail: () -> Observable<MangasPage>): Observable<MangasPage> =
|
||||||
when {
|
when {
|
||||||
query.toIntOrNull() != null -> {
|
query.toIntOrNull() != null -> {
|
||||||
Observable.fromCallable {
|
Observable.fromCallable {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user