More domain model migrations

(cherry picked from commit 696dc59ea5ebacb5c4fc36b04f3d4125d91385a7)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
This commit is contained in:
arkon 2022-12-03 22:54:18 -05:00 committed by Jobobby04
parent 3120a940fe
commit 4b2acc29f5
13 changed files with 31 additions and 93 deletions

View File

@ -12,7 +12,6 @@ data class Category(
val isSystemCategory: Boolean = id == UNCATEGORIZED_ID val isSystemCategory: Boolean = id == UNCATEGORIZED_ID
companion object { companion object {
const val UNCATEGORIZED_ID = 0L const val UNCATEGORIZED_ID = 0L
} }
} }

View File

@ -36,7 +36,6 @@ data class LibrarySort(
// SY <-- // SY <--
companion object { companion object {
fun valueOf(flag: Long): Type { fun valueOf(flag: Long): Type {
return types.find { type -> type.flag == flag and type.mask } ?: default.type return types.find { type -> type.flag == flag and type.mask } ?: default.type
} }
@ -53,7 +52,6 @@ data class LibrarySort(
object Descending : Direction(0b00000000) object Descending : Direction(0b00000000)
companion object { companion object {
fun valueOf(flag: Long): Direction { fun valueOf(flag: Long): Direction {
return directions.find { direction -> direction.flag == flag and direction.mask } ?: default.direction return directions.find { direction -> direction.flag == flag and direction.mask } ?: default.direction
} }

View File

@ -19,12 +19,6 @@ interface Chapter : SChapter, Serializable {
var date_fetch: Long var date_fetch: Long
var source_order: Int var source_order: Int
companion object {
fun create(): Chapter = ChapterImpl().apply {
chapter_number = -1f
}
}
} }
fun Chapter.toDomainChapter(): DomainChapter? { fun Chapter.toDomainChapter(): DomainChapter? {

View File

@ -26,47 +26,18 @@ interface Manga : SManga {
var cover_last_modified: Long var cover_last_modified: Long
// SY -->
var filtered_scanlators: String? var filtered_scanlators: String?
fun sortDescending(): Boolean {
return chapter_flags and DomainManga.CHAPTER_SORT_DIR_MASK.toInt() == DomainManga.CHAPTER_SORT_DESC.toInt()
}
// SY -->
fun getOriginalGenres(): List<String>? { fun getOriginalGenres(): List<String>? {
return originalGenre?.split(", ")?.map { it.trim() } return originalGenre?.split(", ")?.map { it.trim() }
} }
// SY <-- // SY <--
private fun setChapterFlags(flag: Int, mask: Int) {
chapter_flags = chapter_flags and mask.inv() or (flag and mask)
}
private fun setViewerFlags(flag: Int, mask: Int) { private fun setViewerFlags(flag: Int, mask: Int) {
viewer_flags = viewer_flags and mask.inv() or (flag and mask) viewer_flags = viewer_flags and mask.inv() or (flag and mask)
} }
// Used to display the chapter's title one way or another
var displayMode: Int
get() = chapter_flags and DomainManga.CHAPTER_DISPLAY_MASK.toInt()
set(mode) = setChapterFlags(mode, DomainManga.CHAPTER_DISPLAY_MASK.toInt())
var readFilter: Int
get() = chapter_flags and DomainManga.CHAPTER_UNREAD_MASK.toInt()
set(filter) = setChapterFlags(filter, DomainManga.CHAPTER_UNREAD_MASK.toInt())
var downloadedFilter: Int
get() = chapter_flags and DomainManga.CHAPTER_DOWNLOADED_MASK.toInt()
set(filter) = setChapterFlags(filter, DomainManga.CHAPTER_DOWNLOADED_MASK.toInt())
var bookmarkedFilter: Int
get() = chapter_flags and DomainManga.CHAPTER_BOOKMARKED_MASK.toInt()
set(filter) = setChapterFlags(filter, DomainManga.CHAPTER_BOOKMARKED_MASK.toInt())
var sorting: Int
get() = chapter_flags and DomainManga.CHAPTER_SORTING_MASK.toInt()
set(sort) = setChapterFlags(sort, DomainManga.CHAPTER_SORTING_MASK.toInt())
var readingModeType: Int var readingModeType: Int
get() = viewer_flags and ReadingModeType.MASK get() = viewer_flags and ReadingModeType.MASK
set(readingMode) = setViewerFlags(readingMode, ReadingModeType.MASK) set(readingMode) = setViewerFlags(readingMode, ReadingModeType.MASK)
@ -74,14 +45,6 @@ interface Manga : SManga {
var orientationType: Int var orientationType: Int
get() = viewer_flags and OrientationType.MASK get() = viewer_flags and OrientationType.MASK
set(rotationType) = setViewerFlags(rotationType, OrientationType.MASK) set(rotationType) = setViewerFlags(rotationType, OrientationType.MASK)
companion object {
fun create(pathUrl: String, title: String, source: Long = 0): Manga = MangaImpl().apply {
url = pathUrl
this.title = title
this.source = source
}
}
} }
fun Manga.toDomainManga(): DomainManga? { fun Manga.toDomainManga(): DomainManga? {

View File

@ -27,7 +27,6 @@ import eu.kanade.domain.manga.interactor.InsertFlatMetadata
import eu.kanade.domain.manga.interactor.NetworkToLocalManga import eu.kanade.domain.manga.interactor.NetworkToLocalManga
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.domain.manga.model.toMangaUpdate import eu.kanade.domain.manga.model.toMangaUpdate
import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
@ -549,7 +548,7 @@ class LibraryUpdateService(
scope?.launch(handler) { scope?.launch(handler) {
val tracks = getTracks.await(manga.id) val tracks = getTracks.await(manga.id)
if (tracks.isEmpty() || tracks.none { it.syncId == TrackManager.MDLIST }) { if (tracks.isEmpty() || tracks.none { it.syncId == TrackManager.MDLIST }) {
val track = trackManager.mdList.createInitialTracker(manga.toDbManga()) val track = trackManager.mdList.createInitialTracker(manga)
insertTrack.await(trackManager.mdList.refresh(track).toDomainTrack(false)!!) insertTrack.await(trackManager.mdList.refresh(track).toDomainTrack(false)!!)
} }
} }
@ -770,7 +769,7 @@ class LibraryUpdateService(
val dbTracks = getTracks.await(manga.id) val dbTracks = getTracks.await(manga.id)
// find the mdlist entry if its unfollowed the follow it // find the mdlist entry if its unfollowed the follow it
val tracker = TrackItem(dbTracks.firstOrNull { it.syncId == TrackManager.MDLIST }?.toDbTrack() ?: trackManager.mdList.createInitialTracker(manga.toDbManga()), trackManager.mdList) val tracker = TrackItem(dbTracks.firstOrNull { it.syncId == TrackManager.MDLIST }?.toDbTrack() ?: trackManager.mdList.createInitialTracker(manga), trackManager.mdList)
if (tracker.track?.status == FollowStatus.UNFOLLOWED.int) { if (tracker.track?.status == FollowStatus.UNFOLLOWED.int) {
tracker.track.status = FollowStatus.READING.int tracker.track.status = FollowStatus.READING.int

View File

@ -1,10 +1,9 @@
package eu.kanade.tachiyomi.data.track package eu.kanade.tachiyomi.data.track
import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.track.model.Track import eu.kanade.domain.track.model.Track
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.domain.manga.model.Manga as DomainManga
/** /**
* An Enhanced Track Service will never prompt the user to match a manga with the remote. * An Enhanced Track Service will never prompt the user to match a manga with the remote.
@ -31,10 +30,10 @@ interface EnhancedTrackService {
/** /**
* Checks whether the provided source/track/manga triplet is from this TrackService * Checks whether the provided source/track/manga triplet is from this TrackService
*/ */
fun isTrackFrom(track: Track, manga: DomainManga, source: Source?): Boolean fun isTrackFrom(track: Track, manga: Manga, source: Source?): Boolean
/** /**
* Migrates the given track for the manga to the newSource, if possible * Migrates the given track for the manga to the newSource, if possible
*/ */
fun migrateTrack(track: Track, manga: DomainManga, newSource: Source): Track? fun migrateTrack(track: Track, manga: Manga, newSource: Source): Track?
} }

View File

@ -4,8 +4,8 @@ import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import android.graphics.Color import android.graphics.Color
import androidx.annotation.StringRes import androidx.annotation.StringRes
import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.NoLoginTrackService import eu.kanade.tachiyomi.data.track.NoLoginTrackService
@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import java.security.MessageDigest import java.security.MessageDigest
import eu.kanade.domain.manga.model.Manga as DomainManga
import eu.kanade.domain.track.model.Track as DomainTrack import eu.kanade.domain.track.model.Track as DomainTrack
class Kavita(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService { class Kavita(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
@ -104,10 +103,10 @@ class Kavita(private val context: Context, id: Long) : TrackService(id), Enhance
null null
} }
override fun isTrackFrom(track: DomainTrack, manga: DomainManga, source: Source?): Boolean = override fun isTrackFrom(track: DomainTrack, manga: Manga, source: Source?): Boolean =
track.remoteUrl == manga.url && source?.let { accept(it) } == true track.remoteUrl == manga.url && source?.let { accept(it) } == true
override fun migrateTrack(track: DomainTrack, manga: DomainManga, newSource: Source): DomainTrack? = override fun migrateTrack(track: DomainTrack, manga: Manga, newSource: Source): DomainTrack? =
if (accept(newSource)) { if (accept(newSource)) {
track.copy(remoteUrl = manga.url) track.copy(remoteUrl = manga.url)
} else { } else {

View File

@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.data.track.komga
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
import androidx.annotation.StringRes import androidx.annotation.StringRes
import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.EnhancedTrackService
import eu.kanade.tachiyomi.data.track.NoLoginTrackService import eu.kanade.tachiyomi.data.track.NoLoginTrackService
@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import okhttp3.Dns import okhttp3.Dns
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import eu.kanade.domain.manga.model.Manga as DomainManga
import eu.kanade.domain.track.model.Track as DomainTrack import eu.kanade.domain.track.model.Track as DomainTrack
class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService { class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
@ -107,10 +106,10 @@ class Komga(private val context: Context, id: Long) : TrackService(id), Enhanced
null null
} }
override fun isTrackFrom(track: DomainTrack, manga: DomainManga, source: Source?): Boolean = override fun isTrackFrom(track: DomainTrack, manga: Manga, source: Source?): Boolean =
track.remoteUrl == manga.url && source?.let { accept(it) } == true track.remoteUrl == manga.url && source?.let { accept(it) } == true
override fun migrateTrack(track: DomainTrack, manga: DomainManga, newSource: Source): DomainTrack? = override fun migrateTrack(track: DomainTrack, manga: Manga, newSource: Source): DomainTrack? =
if (accept(newSource)) { if (accept(newSource)) {
track.copy(remoteUrl = manga.url) track.copy(remoteUrl = manga.url)
} else { } else {

View File

@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.data.track.mdlist
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
import androidx.annotation.StringRes import androidx.annotation.StringRes
import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
@ -121,7 +121,7 @@ class MdList(private val context: Context, id: Long) : TrackService(id) {
fun createInitialTracker(dbManga: Manga, mdManga: Manga = dbManga): Track { fun createInitialTracker(dbManga: Manga, mdManga: Manga = dbManga): Track {
return Track.create(TrackManager.MDLIST).apply { return Track.create(TrackManager.MDLIST).apply {
manga_id = dbManga.id!! manga_id = dbManga.id
status = FollowStatus.UNFOLLOWED.int status = FollowStatus.UNFOLLOWED.int
tracking_url = MdUtil.baseUrl + mdManga.url tracking_url = MdUtil.baseUrl + mdManga.url
title = mdManga.title title = mdManga.title

View File

@ -33,7 +33,6 @@ import eu.kanade.domain.manga.interactor.GetManga
import eu.kanade.domain.manga.interactor.NetworkToLocalManga import eu.kanade.domain.manga.interactor.NetworkToLocalManga
import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.domain.manga.model.toDomainManga import eu.kanade.domain.manga.model.toDomainManga
import eu.kanade.domain.manga.model.toMangaUpdate import eu.kanade.domain.manga.model.toMangaUpdate
import eu.kanade.domain.source.interactor.DeleteSavedSearchById import eu.kanade.domain.source.interactor.DeleteSavedSearchById
@ -402,7 +401,7 @@ open class BrowseSourceScreenModel(
.filter { it.accept(source) } .filter { it.accept(source) }
.forEach { service -> .forEach { service ->
try { try {
service.match(manga.toDbManga())?.let { track -> service.match(manga)?.let { track ->
track.manga_id = manga.id track.manga_id = manga.id
(service as TrackService).bind(track) (service as TrackService).bind(track)
insertTrack.await(track.toDomainTrack()!!) insertTrack.await(track.toDomainTrack()!!)

View File

@ -45,7 +45,6 @@ import eu.kanade.domain.manga.model.MergeMangaSettingsUpdate
import eu.kanade.domain.manga.model.PagePreview import eu.kanade.domain.manga.model.PagePreview
import eu.kanade.domain.manga.model.TriStateFilter import eu.kanade.domain.manga.model.TriStateFilter
import eu.kanade.domain.manga.model.isLocal import eu.kanade.domain.manga.model.isLocal
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
@ -769,7 +768,7 @@ class MangaInfoScreenModel(
.forEach { service -> .forEach { service ->
launchIO { launchIO {
try { try {
service.match(manga.toDbManga())?.let { track -> service.match(manga)?.let { track ->
(service as TrackService).registerTracking(track, mangaId) (service as TrackService).registerTracking(track, mangaId)
} }
} catch (e: Exception) { } catch (e: Exception) {
@ -1478,7 +1477,7 @@ class MangaInfoScreenModel(
val mdManga = state.manga.takeIf { it.source in mangaDexSourceIds } val mdManga = state.manga.takeIf { it.source in mangaDexSourceIds }
?: state.mergedData?.manga?.values?.find { it.source in mangaDexSourceIds } ?: state.mergedData?.manga?.values?.find { it.source in mangaDexSourceIds }
?: throw IllegalArgumentException("Could not create initial track") ?: throw IllegalArgumentException("Could not create initial track")
val track = trackManager.mdList.createInitialTracker(state.manga.toDbManga(), mdManga.toDbManga()) val track = trackManager.mdList.createInitialTracker(state.manga, mdManga)
.toDomainTrack(false)!! .toDomainTrack(false)!!
insertTrack.await(track) insertTrack.await(track)
return TrackItem(getTracks.await(mangaId).first { it.syncId == TrackManager.MDLIST }.toDbTrack(), trackManager.mdList) return TrackItem(getTracks.await(mangaId).first { it.syncId == TrackManager.MDLIST }.toDbTrack(), trackManager.mdList)

View File

@ -38,7 +38,6 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
import eu.kanade.domain.manga.interactor.GetManga import eu.kanade.domain.manga.interactor.GetManga
import eu.kanade.domain.manga.interactor.GetMangaWithChapters import eu.kanade.domain.manga.interactor.GetMangaWithChapters
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.domain.track.interactor.DeleteTrack import eu.kanade.domain.track.interactor.DeleteTrack
import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
@ -211,7 +210,7 @@ data class TrackInfoDialogHomeScreen(
fun registerEnhancedTracking(item: TrackItem) { fun registerEnhancedTracking(item: TrackItem) {
item.service as EnhancedTrackService item.service as EnhancedTrackService
coroutineScope.launchNonCancellable { coroutineScope.launchNonCancellable {
val manga = Injekt.get<GetManga>().await(mangaId)?.toDbManga() ?: return@launchNonCancellable val manga = Injekt.get<GetManga>().await(mangaId) ?: return@launchNonCancellable
try { try {
val matchResult = item.service.match(manga) ?: throw Exception() val matchResult = item.service.match(manga) ?: throw Exception()
item.service.registerTracking(matchResult, mangaId) item.service.registerTracking(matchResult, mangaId)

View File

@ -186,15 +186,12 @@ class ReaderPresenter(
* time in a background thread to avoid blocking the UI. * time in a background thread to avoid blocking the UI.
*/ */
private val chapterList by lazy { private val chapterList by lazy {
val manga = manga!! val manga = manga!!.toDomainManga()!!
// SY -->
val filteredScanlators = manga.filtered_scanlators?.let { MdUtil.getScanlators(it) }
// SY <--
val chapters = runBlocking { val chapters = runBlocking {
/* SY --> */ if (manga.source == MERGED_SOURCE_ID) { /* SY --> */ if (manga.source == MERGED_SOURCE_ID) {
getMergedChapterByMangaId.await(manga.id!!) getMergedChapterByMangaId.await(manga.id)
} else { } else {
/* SY <-- */ getChapterByMangaId.await(manga.id!!) /* SY <-- */ getChapterByMangaId.await(manga.id)
} }
} }
@ -207,14 +204,14 @@ class ReaderPresenter(
when { when {
readerPreferences.skipRead().get() && it.read -> true readerPreferences.skipRead().get() && it.read -> true
readerPreferences.skipFiltered().get() -> { readerPreferences.skipFiltered().get() -> {
(manga.readFilter == DomainManga.CHAPTER_SHOW_READ.toInt() && !it.read) || (manga.unreadFilterRaw == DomainManga.CHAPTER_SHOW_READ && !it.read) ||
(manga.readFilter == DomainManga.CHAPTER_SHOW_UNREAD.toInt() && it.read) || (manga.unreadFilterRaw == DomainManga.CHAPTER_SHOW_UNREAD && it.read) ||
(manga.downloadedFilter == DomainManga.CHAPTER_SHOW_DOWNLOADED.toInt() && !downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, manga.source)) || (manga.downloadedFilterRaw == DomainManga.CHAPTER_SHOW_DOWNLOADED && !downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) ||
(manga.downloadedFilter == DomainManga.CHAPTER_SHOW_NOT_DOWNLOADED.toInt() && downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, manga.source)) || (manga.downloadedFilterRaw == DomainManga.CHAPTER_SHOW_NOT_DOWNLOADED && downloadManager.isChapterDownloaded(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) ||
(manga.bookmarkedFilter == DomainManga.CHAPTER_SHOW_BOOKMARKED.toInt() && !it.bookmark) || (manga.bookmarkedFilterRaw == DomainManga.CHAPTER_SHOW_BOOKMARKED && !it.bookmark) ||
(manga.bookmarkedFilter == DomainManga.CHAPTER_SHOW_NOT_BOOKMARKED.toInt() && it.bookmark) || (manga.bookmarkedFilterRaw == DomainManga.CHAPTER_SHOW_NOT_BOOKMARKED && it.bookmark) ||
// SY --> // SY -->
(filteredScanlators != null && MdUtil.getScanlators(it.scanlator).none { group -> filteredScanlators.contains(group) }) (manga.filteredScanlators != null && MdUtil.getScanlators(it.scanlator).none { group -> manga.filteredScanlators.contains(group) })
// SY <-- // SY <--
} }
else -> false else -> false
@ -231,7 +228,7 @@ class ReaderPresenter(
} }
chaptersForReader chaptersForReader
.sortedWith(getChapterSort(manga.toDomainManga()!!, sortDescending = false)) .sortedWith(getChapterSort(manga, sortDescending = false))
.map { it.toDbChapter() } .map { it.toDbChapter() }
.map(::ReaderChapter) .map(::ReaderChapter)
} }
@ -784,11 +781,9 @@ class ReaderPresenter(
fun setMangaReadingMode(readingModeType: Int) { fun setMangaReadingMode(readingModeType: Int) {
val manga = manga ?: return val manga = manga ?: return
manga.readingModeType = readingModeType manga.readingModeType = readingModeType
runBlocking {
setMangaViewerFlags.awaitSetMangaReadingMode(manga.id!!.toLong(), readingModeType.toLong())
}
coroutineScope.launchIO { coroutineScope.launchIO {
setMangaViewerFlags.awaitSetMangaReadingMode(manga.id!!.toLong(), readingModeType.toLong())
delay(250) delay(250)
val currChapters = viewerChaptersRelay.value val currChapters = viewerChaptersRelay.value
if (currChapters != null) { if (currChapters != null) {
@ -823,13 +818,9 @@ class ReaderPresenter(
fun setMangaOrientationType(rotationType: Int) { fun setMangaOrientationType(rotationType: Int) {
val manga = manga ?: return val manga = manga ?: return
manga.orientationType = rotationType manga.orientationType = rotationType
runBlocking {
setMangaViewerFlags.awaitSetOrientationType(manga.id!!.toLong(), rotationType.toLong())
}
logcat(LogPriority.INFO) { "Manga orientation is ${manga.orientationType}" }
coroutineScope.launchIO { coroutineScope.launchIO {
setMangaViewerFlags.awaitSetOrientationType(manga.id!!.toLong(), rotationType.toLong())
delay(250) delay(250)
val currChapters = viewerChaptersRelay.value val currChapters = viewerChaptersRelay.value
if (currChapters != null) { if (currChapters != null) {