Reduce some usages of toDbManga
(#8116)
Co-Authored-By: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com> (cherry picked from commit b04d1e5f50b1a3622e8bfde3ddced7e5a7cd8e2e) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt
This commit is contained in:
parent
30e3cc46c8
commit
37fd74f141
@ -135,6 +135,34 @@ data class Manga(
|
|||||||
it.initialized = initialized
|
it.initialized = initialized
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun copyFrom(other: SManga): Manga {
|
||||||
|
// SY -->
|
||||||
|
val author = other.author ?: ogAuthor
|
||||||
|
val artist = other.artist ?: ogArtist
|
||||||
|
val description = other.description ?: ogDescription
|
||||||
|
val genres = if (other.genre != null) {
|
||||||
|
other.getGenres()
|
||||||
|
} else {
|
||||||
|
ogGenre
|
||||||
|
}
|
||||||
|
// SY <--
|
||||||
|
val thumbnailUrl = other.thumbnail_url ?: thumbnailUrl
|
||||||
|
return this.copy(
|
||||||
|
// SY -->
|
||||||
|
ogAuthor = author,
|
||||||
|
ogArtist = artist,
|
||||||
|
ogDescription = description,
|
||||||
|
ogGenre = genres,
|
||||||
|
// SY <--
|
||||||
|
thumbnailUrl = thumbnailUrl,
|
||||||
|
// SY -->
|
||||||
|
ogStatus = other.status.toLong(),
|
||||||
|
// SY <--
|
||||||
|
updateStrategy = other.update_strategy,
|
||||||
|
initialized = other.initialized && initialized,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
// Generic filter that does not filter anything
|
// Generic filter that does not filter anything
|
||||||
const val SHOW_ALL = 0x00000000L
|
const val SHOW_ALL = 0x00000000L
|
||||||
|
@ -28,18 +28,17 @@ import eu.kanade.tachiyomi.source.model.SManga
|
|||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
||||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||||
|
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
||||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
import exh.savedsearches.models.FeedSavedSearch
|
import exh.savedsearches.models.FeedSavedSearch
|
||||||
import exh.savedsearches.models.SavedSearch
|
import exh.savedsearches.models.SavedSearch
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.NonCancellable
|
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
@ -286,17 +285,13 @@ open class FeedPresenter(
|
|||||||
*/
|
*/
|
||||||
private suspend fun initializeManga(source: CatalogueSource?, manga: DomainManga) {
|
private suspend fun initializeManga(source: CatalogueSource?, manga: DomainManga) {
|
||||||
if (source == null || manga.thumbnailUrl != null || manga.initialized) return
|
if (source == null || manga.thumbnailUrl != null || manga.initialized) return
|
||||||
withContext(NonCancellable) {
|
withNonCancellableContext {
|
||||||
val db = manga.toDbManga()
|
|
||||||
try {
|
try {
|
||||||
val networkManga = source.getMangaDetails(db.copy())
|
val networkManga = source.getMangaDetails(manga.toSManga())
|
||||||
db.copyFrom(networkManga)
|
val updatedManga = manga.copyFrom(networkManga)
|
||||||
db.initialized = true
|
.copy(initialized = true)
|
||||||
updateManga.await(
|
|
||||||
db
|
updateManga.await(updatedManga.toMangaUpdate())
|
||||||
.toDomainManga()
|
|
||||||
?.toMangaUpdate()!!,
|
|
||||||
)
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logcat(LogPriority.ERROR, e)
|
logcat(LogPriority.ERROR, e)
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ import eu.kanade.tachiyomi.ui.browse.source.filter.TriStateSectionItem
|
|||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
||||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||||
|
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
||||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
import eu.kanade.tachiyomi.util.lang.withUIContext
|
||||||
import eu.kanade.tachiyomi.util.removeCovers
|
import eu.kanade.tachiyomi.util.removeCovers
|
||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
@ -83,7 +84,6 @@ import exh.metadata.metadata.base.RaisedSearchMetadata
|
|||||||
import exh.savedsearches.models.SavedSearch
|
import exh.savedsearches.models.SavedSearch
|
||||||
import exh.source.getMainSource
|
import exh.source.getMainSource
|
||||||
import exh.util.nullIfBlank
|
import exh.util.nullIfBlank
|
||||||
import kotlinx.coroutines.NonCancellable
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.firstOrNull
|
import kotlinx.coroutines.flow.firstOrNull
|
||||||
@ -92,7 +92,6 @@ import kotlinx.coroutines.flow.map
|
|||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
@ -300,17 +299,13 @@ open class BrowseSourcePresenter(
|
|||||||
*/
|
*/
|
||||||
private suspend fun initializeManga(manga: DomainManga) {
|
private suspend fun initializeManga(manga: DomainManga) {
|
||||||
if (manga.thumbnailUrl != null || manga.initialized) return
|
if (manga.thumbnailUrl != null || manga.initialized) return
|
||||||
withContext(NonCancellable) {
|
withNonCancellableContext {
|
||||||
val db = manga.toDbManga()
|
|
||||||
try {
|
try {
|
||||||
val networkManga = source!!.getMangaDetails(db.copy())
|
val networkManga = source!!.getMangaDetails(manga.toSManga())
|
||||||
db.copyFrom(networkManga)
|
val updatedManga = manga.copyFrom(networkManga)
|
||||||
db.initialized = true
|
.copy(initialized = true)
|
||||||
updateManga.await(
|
|
||||||
db
|
updateManga.await(updatedManga.toMangaUpdate())
|
||||||
.toDomainManga()
|
|
||||||
?.toMangaUpdate()!!,
|
|
||||||
)
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logcat(LogPriority.ERROR, e)
|
logcat(LogPriority.ERROR, e)
|
||||||
}
|
}
|
||||||
|
@ -29,15 +29,14 @@ import eu.kanade.tachiyomi.source.model.SManga
|
|||||||
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
|
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
|
||||||
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
||||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||||
|
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
import exh.savedsearches.models.FeedSavedSearch
|
import exh.savedsearches.models.FeedSavedSearch
|
||||||
import exh.savedsearches.models.SavedSearch
|
import exh.savedsearches.models.SavedSearch
|
||||||
import kotlinx.coroutines.NonCancellable
|
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
@ -245,17 +244,13 @@ open class SourceFeedPresenter(
|
|||||||
*/
|
*/
|
||||||
private suspend fun initializeManga(manga: DomainManga) {
|
private suspend fun initializeManga(manga: DomainManga) {
|
||||||
if (manga.thumbnailUrl != null || manga.initialized) return
|
if (manga.thumbnailUrl != null || manga.initialized) return
|
||||||
withContext(NonCancellable) {
|
withNonCancellableContext {
|
||||||
val db = manga.toDbManga()
|
|
||||||
try {
|
try {
|
||||||
val networkManga = source.getMangaDetails(db.copy())
|
val networkManga = source.getMangaDetails(manga.toSManga())
|
||||||
db.copyFrom(networkManga)
|
val updatedManga = manga.copyFrom(networkManga)
|
||||||
db.initialized = true
|
.copy(initialized = true)
|
||||||
updateManga.await(
|
|
||||||
db
|
updateManga.await(updatedManga.toMangaUpdate())
|
||||||
.toDomainManga()
|
|
||||||
?.toMangaUpdate()!!,
|
|
||||||
)
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logcat(LogPriority.ERROR, e)
|
logcat(LogPriority.ERROR, e)
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ suspend fun DomainManga.editCover(
|
|||||||
coverCache: CoverCache = Injekt.get(),
|
coverCache: CoverCache = Injekt.get(),
|
||||||
) {
|
) {
|
||||||
if (isLocal()) {
|
if (isLocal()) {
|
||||||
LocalSource.updateCover(context, toDbManga(), stream)
|
LocalSource.updateCover(context, toSManga(), stream)
|
||||||
updateManga.awaitUpdateCoverLastModified(id)
|
updateManga.awaitUpdateCoverLastModified(id)
|
||||||
} else if (favorite) {
|
} else if (favorite) {
|
||||||
coverCache.setCustomCoverToCache(toDbManga(), stream)
|
coverCache.setCustomCoverToCache(toDbManga(), stream)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user