diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index ef8b4b5d1..11f95ca89 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.os.Build import android.os.IBinder import android.os.PowerManager +import com.elvishew.xlog.XLog import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -448,12 +449,16 @@ class LibraryUpdateService( } // SY --> - if (source.getMainSource() is MangaDex) { - val tracks = db.getTracks(manga).executeAsBlocking() - if (tracks.isEmpty() || tracks.all { it.sync_id != TrackManager.MDLIST }) { - var track = trackManager.mdList.createInitialTracker(manga) - track = runBlocking { trackManager.mdList.refresh(track).awaitSingle() } - db.insertTrack(track).executeAsBlocking() + if (source.getMainSource() is MangaDex && trackManager.mdList.isLogged) { + try { + val tracks = db.getTracks(manga).executeAsBlocking() + if (tracks.isEmpty() || tracks.all { it.sync_id != TrackManager.MDLIST }) { + var track = trackManager.mdList.createInitialTracker(manga) + track = runBlocking { trackManager.mdList.refresh(track).awaitSingle() } + db.insertTrack(track).executeAsBlocking() + } + } catch (e: Exception) { + XLog.e(e) } } // SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt index 23862469a..6dfb8d713 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt @@ -131,6 +131,4 @@ class MdList(private val context: Context, id: Int) : TrackService(id) { override fun search(query: String): Observable> = throw Exception("not used") override fun login(username: String, password: String): Completable = throw Exception("not used") - - override val isLogged = mdex?.isLogged() ?: false } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index 9f7538a11..b1e48e84d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -56,6 +56,7 @@ import okhttp3.Response import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy class MangaDex(delegate: HttpSource, val context: Context) : DelegatedHttpSource(delegate), @@ -79,9 +80,12 @@ class MangaDex(delegate: HttpSource, val context: Context) : override val matchingHosts: List = 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 = urlImportFetchSearchManga(context, query) { - ImportIdToMdId(query) { + importIdToMdId(query) { super.fetchSearchManga(page, query, filters) } } @@ -97,11 +101,11 @@ class MangaDex(delegate: HttpSource, val context: Context) : } override fun fetchMangaDetails(manga: SManga): Observable { - return MangaHandler(client, headers, listOf(mdLang), Injekt.get().mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga) + return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga) } override fun fetchChapterList(manga: SManga): Observable> { - return MangaHandler(client, headers, listOf(mdLang), Injekt.get().mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga) + return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga) } @ExperimentalSerializationApi @@ -135,7 +139,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : } override fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response) { - ApiMangaParser(listOf(mdLang)).parseIntoMetadata(metadata, input, Injekt.get().mangaDexForceLatestCovers().get()) + ApiMangaParser(listOf(mdLang)).parseIntoMetadata(metadata, input, preferences.mangaDexForceLatestCovers().get()) } override fun fetchFollows(): Observable { @@ -150,7 +154,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : override fun isLogged(): Boolean { 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( @@ -196,7 +200,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : val resultStr = result.body!!.string() if (resultStr.contains("success", true)) { network.cookieManager.remove(httpUrl) - Injekt.get().mdList.logout() + trackManager.mdList.logout() return@withContext true } @@ -237,7 +241,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : return MangaHandler(client, headers, listOf(mdLang)).fetchRandomMangaId() } - private fun ImportIdToMdId(query: String, fail: () -> Observable): Observable = + private fun importIdToMdId(query: String, fail: () -> Observable): Observable = when { query.toIntOrNull() != null -> { Observable.fromCallable {