Fix saving override for non-library manga
This commit is contained in:
@@ -30,21 +30,19 @@ constructor(
|
||||
oldManga: Manga,
|
||||
newManga: Manga,
|
||||
) {
|
||||
val oldDetails =
|
||||
if (oldManga.chapters.isNullOrEmpty()) {
|
||||
runCatchingCancellable {
|
||||
mangaRepositoryFactory.create(oldManga.source).getDetails(oldManga)
|
||||
}.getOrDefault(oldManga)
|
||||
} else {
|
||||
oldManga
|
||||
}
|
||||
val newDetails =
|
||||
if (newManga.chapters.isNullOrEmpty()) {
|
||||
mangaRepositoryFactory.create(newManga.source).getDetails(newManga)
|
||||
} else {
|
||||
newManga
|
||||
}
|
||||
mangaDataRepository.storeManga(newDetails)
|
||||
val oldDetails = if (oldManga.chapters.isNullOrEmpty()) {
|
||||
runCatchingCancellable {
|
||||
mangaRepositoryFactory.create(oldManga.source).getDetails(oldManga)
|
||||
}.getOrDefault(oldManga)
|
||||
} else {
|
||||
oldManga
|
||||
}
|
||||
val newDetails = if (newManga.chapters.isNullOrEmpty()) {
|
||||
mangaRepositoryFactory.create(newManga.source).getDetails(newManga)
|
||||
} else {
|
||||
newManga
|
||||
}
|
||||
mangaDataRepository.storeManga(newDetails, replaceExisting = true)
|
||||
database.withTransaction {
|
||||
// replace favorites
|
||||
val favoritesDao = database.getFavouritesDao()
|
||||
@@ -101,11 +99,11 @@ constructor(
|
||||
mangaId = newDetails.id,
|
||||
rating = prevInfo.rating,
|
||||
status =
|
||||
prevInfo.status ?: when {
|
||||
newHistory == null -> ScrobblingStatus.PLANNED
|
||||
newHistory.percent == 1f -> ScrobblingStatus.COMPLETED
|
||||
else -> ScrobblingStatus.READING
|
||||
},
|
||||
prevInfo.status ?: when {
|
||||
newHistory == null -> ScrobblingStatus.PLANNED
|
||||
newHistory.percent == 1f -> ScrobblingStatus.COMPLETED
|
||||
else -> ScrobblingStatus.READING
|
||||
},
|
||||
comment = prevInfo.comment,
|
||||
)
|
||||
if (newHistory != null) {
|
||||
|
||||
@@ -149,7 +149,7 @@ class AppShortcutManager @Inject constructor(
|
||||
onSuccess = { IconCompat.createWithAdaptiveBitmap(it) },
|
||||
onFailure = { IconCompat.createWithResource(context, R.drawable.ic_shortcut_default) },
|
||||
)
|
||||
mangaRepository.storeManga(manga)
|
||||
mangaRepository.storeManga(manga, replaceExisting = true)
|
||||
val title = manga.title.ifEmpty {
|
||||
manga.altTitles.firstOrNull()
|
||||
}.ifNullOrEmpty {
|
||||
|
||||
@@ -41,7 +41,7 @@ class MangaDataRepository @Inject constructor(
|
||||
|
||||
suspend fun saveReaderMode(manga: Manga, mode: ReaderMode) {
|
||||
db.withTransaction {
|
||||
storeManga(manga)
|
||||
storeManga(manga, replaceExisting = false)
|
||||
val entity = db.getPreferencesDao().find(manga.id) ?: newEntity(manga.id)
|
||||
db.getPreferencesDao().upsert(entity.copy(mode = mode.id))
|
||||
}
|
||||
@@ -49,7 +49,7 @@ class MangaDataRepository @Inject constructor(
|
||||
|
||||
suspend fun saveColorFilter(manga: Manga, colorFilter: ReaderColorFilter?) {
|
||||
db.withTransaction {
|
||||
storeManga(manga)
|
||||
storeManga(manga, replaceExisting = false)
|
||||
val entity = db.getPreferencesDao().find(manga.id) ?: newEntity(manga.id)
|
||||
db.getPreferencesDao().upsert(
|
||||
entity.copy(
|
||||
@@ -87,10 +87,11 @@ class MangaDataRepository @Inject constructor(
|
||||
return map
|
||||
}
|
||||
|
||||
suspend fun setOverride(mangaId: Long, override: MangaOverride?) {
|
||||
suspend fun setOverride(manga: Manga, override: MangaOverride?) {
|
||||
db.withTransaction {
|
||||
storeManga(manga, replaceExisting = false)
|
||||
val dao = db.getPreferencesDao()
|
||||
val entity = dao.find(mangaId) ?: newEntity(mangaId)
|
||||
val entity = dao.find(manga.id) ?: newEntity(manga.id)
|
||||
dao.upsert(
|
||||
entity.copy(
|
||||
titleOverride = override?.title?.nullIfEmpty(),
|
||||
@@ -127,7 +128,10 @@ class MangaDataRepository @Inject constructor(
|
||||
else -> null
|
||||
}
|
||||
|
||||
suspend fun storeManga(manga: Manga) {
|
||||
suspend fun storeManga(manga: Manga, replaceExisting: Boolean) {
|
||||
if (!replaceExisting && db.getMangaDao().find(manga.id) != null) {
|
||||
return
|
||||
}
|
||||
db.withTransaction {
|
||||
// avoid storing local manga if remote one is already stored
|
||||
val existing = if (manga.isLocal) {
|
||||
|
||||
@@ -537,7 +537,7 @@ class DownloadWorker @AssistedInject constructor(
|
||||
return
|
||||
}
|
||||
val requests = tasks.map { (manga, task) ->
|
||||
mangaDataRepository.storeManga(manga)
|
||||
mangaDataRepository.storeManga(manga, replaceExisting = true)
|
||||
OneTimeWorkRequestBuilder<DownloadWorker>()
|
||||
.setConstraints(createConstraints(task.allowMeteredNetwork))
|
||||
.addTag(TAG)
|
||||
|
||||
@@ -24,7 +24,7 @@ class RecoverMangaUseCase @Inject constructor(
|
||||
repository.getDetails(it)
|
||||
} ?: return@runCatchingCancellable null
|
||||
val merged = merge(manga, newManga)
|
||||
mangaDataRepository.storeManga(merged)
|
||||
mangaDataRepository.storeManga(merged, replaceExisting = true)
|
||||
merged
|
||||
}.onFailure {
|
||||
it.printStackTraceDebug()
|
||||
|
||||
@@ -118,7 +118,7 @@ class HistoryRepository @Inject constructor(
|
||||
}
|
||||
assert(manga.chapters != null)
|
||||
db.withTransaction {
|
||||
mangaRepository.storeManga(manga)
|
||||
mangaRepository.storeManga(manga, replaceExisting = true)
|
||||
val branch = manga.chapters?.findById(chapterId)?.branch
|
||||
db.getHistoryDao().upsert(
|
||||
HistoryEntity(
|
||||
|
||||
@@ -97,7 +97,7 @@ class LocalMangaIndex @Inject constructor(
|
||||
}
|
||||
|
||||
private suspend fun upsert(manga: LocalManga) {
|
||||
mangaDataRepository.storeManga(manga.manga)
|
||||
mangaDataRepository.storeManga(manga.manga, replaceExisting = true)
|
||||
db.getLocalMangaIndexDao().upsert(manga.toEntity())
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ class CoverRestoreInterceptor @Inject constructor(
|
||||
val repo = repositoryFactory.create(manga.source)
|
||||
val fixed = repo.find(manga) ?: return false
|
||||
return if (fixed != manga) {
|
||||
dataRepository.storeManga(fixed)
|
||||
dataRepository.storeManga(fixed, replaceExisting = true)
|
||||
fixed.coverUrl != manga.coverUrl
|
||||
} else {
|
||||
false
|
||||
|
||||
@@ -37,7 +37,7 @@ class OverrideConfigViewModel @Inject constructor(
|
||||
val override = checkNotNull(data.value).second.copy(
|
||||
title = title,
|
||||
)
|
||||
dataRepository.setOverride(manga.id, override)
|
||||
dataRepository.setOverride(manga, override)
|
||||
onSaved.call(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user