Prechádzať zdrojové kódy

Move more models to domain module

arkon 2 rokov pred
rodič
commit
345e9c2a9a
99 zmenil súbory, kde vykonal 401 pridanie a 382 odobranie
  1. 1 1
      app/src/main/java/eu/kanade/data/chapter/ChapterMapper.kt
  2. 2 2
      app/src/main/java/eu/kanade/data/chapter/ChapterRepositoryImpl.kt
  3. 1 1
      app/src/main/java/eu/kanade/data/manga/MangaMapper.kt
  4. 1 1
      app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt
  5. 1 1
      app/src/main/java/eu/kanade/domain/chapter/interactor/GetChapter.kt
  6. 1 1
      app/src/main/java/eu/kanade/domain/chapter/interactor/GetChapterByMangaId.kt
  7. 1 1
      app/src/main/java/eu/kanade/domain/chapter/interactor/SetDefaultChapterSettings.kt
  8. 3 3
      app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt
  9. 1 1
      app/src/main/java/eu/kanade/domain/chapter/interactor/ShouldUpdateDbChapter.kt
  10. 6 3
      app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt
  11. 2 2
      app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithTrackServiceTwoWay.kt
  12. 1 1
      app/src/main/java/eu/kanade/domain/chapter/interactor/UpdateChapter.kt
  13. 18 52
      app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt
  14. 4 2
      app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt
  15. 2 2
      app/src/main/java/eu/kanade/domain/chapter/repository/ChapterRepository.kt
  16. 2 2
      app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt
  17. 1 1
      app/src/main/java/eu/kanade/domain/history/interactor/GetNextChapters.kt
  18. 1 1
      app/src/main/java/eu/kanade/domain/library/model/LibraryManga.kt
  19. 1 1
      app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt
  20. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/GetDuplicateLibraryManga.kt
  21. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/GetFavorites.kt
  22. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/GetManga.kt
  23. 2 2
      app/src/main/java/eu/kanade/domain/manga/interactor/GetMangaWithChapters.kt
  24. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/NetworkToLocalManga.kt
  25. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaChapterFlags.kt
  26. 1 1
      app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt
  27. 2 1
      app/src/main/java/eu/kanade/domain/manga/model/ComicInfo.kt
  28. 45 191
      app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
  29. 0 13
      app/src/main/java/eu/kanade/domain/manga/model/MangaCover.kt
  30. 1 1
      app/src/main/java/eu/kanade/domain/manga/repository/MangaRepository.kt
  31. 1 1
      app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
  32. 1 1
      app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt
  33. 1 1
      app/src/main/java/eu/kanade/presentation/browse/MigrateMangaScreen.kt
  34. 1 1
      app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt
  35. 1 1
      app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt
  36. 1 1
      app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt
  37. 1 1
      app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceDialogs.kt
  38. 1 1
      app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt
  39. 2 2
      app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchCardRow.kt
  40. 1 1
      app/src/main/java/eu/kanade/presentation/components/SettingsItems.kt
  41. 4 2
      app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
  42. 3 2
      app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
  43. 1 1
      app/src/main/java/eu/kanade/presentation/manga/components/BaseMangaListItem.kt
  44. 1 1
      app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt
  45. 1 1
      app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
  46. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
  47. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
  48. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
  49. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt
  50. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt
  51. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverKeyer.kt
  52. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt
  53. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt
  54. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt
  55. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
  56. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadPendingDeleter.kt
  57. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
  58. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadStore.kt
  59. 3 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
  60. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt
  61. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt
  62. 2 2
      app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
  63. 5 3
      app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
  64. 3 3
      app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
  65. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/track/EnhancedTrackService.kt
  66. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt
  67. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt
  68. 1 1
      app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt
  69. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt
  70. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaScreenModel.kt
  71. 3 2
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
  72. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt
  73. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
  74. 4 2
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
  75. 4 2
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt
  76. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt
  77. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt
  78. 2 2
      app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
  79. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
  80. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt
  81. 3 2
      app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
  82. 6 4
      app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
  83. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
  84. 4 2
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
  85. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
  86. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt
  87. 2 0
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt
  88. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt
  89. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt
  90. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
  91. 2 1
      app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt
  92. 2 2
      app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt
  93. 2 2
      app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSorter.kt
  94. 36 0
      domain/src/main/java/tachiyomi/domain/chapter/model/Chapter.kt
  95. 1 1
      domain/src/main/java/tachiyomi/domain/chapter/model/ChapterUpdate.kt
  96. 110 0
      domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
  97. 10 0
      domain/src/main/java/tachiyomi/domain/manga/model/MangaCover.kt
  98. 23 0
      domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt
  99. 7 0
      domain/src/main/java/tachiyomi/domain/manga/model/TriStateFilter.kt

+ 1 - 1
app/src/main/java/eu/kanade/data/chapter/ChapterMapper.kt

@@ -1,6 +1,6 @@
 package eu.kanade.data.chapter
 
-import eu.kanade.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.Chapter
 
 val chapterMapper: (Long, Long, String, String, String?, Boolean, Boolean, Long, Float, Long, Long, Long) -> Chapter =
     { id, mangaId, url, name, scanlator, read, bookmark, lastPageRead, chapterNumber, sourceOrder, dateFetch, dateUpload ->

+ 2 - 2
app/src/main/java/eu/kanade/data/chapter/ChapterRepositoryImpl.kt

@@ -1,13 +1,13 @@
 package eu.kanade.data.chapter
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import eu.kanade.tachiyomi.util.system.toLong
 import kotlinx.coroutines.flow.Flow
 import logcat.LogPriority
 import tachiyomi.data.DatabaseHandler
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.ChapterUpdate
 
 class ChapterRepositoryImpl(
     private val handler: DatabaseHandler,

+ 1 - 1
app/src/main/java/eu/kanade/data/manga/MangaMapper.kt

@@ -1,8 +1,8 @@
 package eu.kanade.data.manga
 
 import eu.kanade.domain.library.model.LibraryManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.source.model.UpdateStrategy
+import tachiyomi.domain.manga.model.Manga
 
 val mangaMapper: (Long, Long, String, String?, String?, String?, List<String>?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, UpdateStrategy) -> Manga =
     { id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, _, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, updateStrategy ->

+ 1 - 1
app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt

@@ -1,7 +1,6 @@
 package eu.kanade.data.manga
 
 import eu.kanade.domain.library.model.LibraryManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import eu.kanade.tachiyomi.util.system.toLong
@@ -10,6 +9,7 @@ import logcat.LogPriority
 import tachiyomi.data.DatabaseHandler
 import tachiyomi.data.listOfStringsAdapter
 import tachiyomi.data.updateStrategyAdapter
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 
 class MangaRepositoryImpl(

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/interactor/GetChapter.kt

@@ -1,9 +1,9 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
 
 class GetChapter(
     private val chapterRepository: ChapterRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/interactor/GetChapterByMangaId.kt

@@ -1,9 +1,9 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
 
 class GetChapterByMangaId(
     private val chapterRepository: ChapterRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/interactor/SetDefaultChapterSettings.kt

@@ -3,8 +3,8 @@ package eu.kanade.domain.chapter.interactor
 import eu.kanade.domain.library.service.LibraryPreferences
 import eu.kanade.domain.manga.interactor.GetFavorites
 import eu.kanade.domain.manga.interactor.SetMangaChapterFlags
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
+import tachiyomi.domain.manga.model.Manga
 
 class SetMangaDefaultChapterFlags(
     private val libraryPreferences: LibraryPreferences,

+ 3 - 3
app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt

@@ -1,15 +1,15 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.domain.download.interactor.DeleteDownload
 import eu.kanade.domain.download.service.DownloadPreferences
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
 import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
 import eu.kanade.tachiyomi.util.system.logcat
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.ChapterUpdate
+import tachiyomi.domain.manga.model.Manga
 
 class SetReadStatus(
     private val downloadPreferences: DownloadPreferences,

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/interactor/ShouldUpdateDbChapter.kt

@@ -1,6 +1,6 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.Chapter
 
 class ShouldUpdateDbChapter {
 

+ 6 - 3
app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt

@@ -2,11 +2,11 @@ package eu.kanade.domain.chapter.interactor
 
 import eu.kanade.data.chapter.CleanupChapterName
 import eu.kanade.data.chapter.NoChaptersException
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.toChapterUpdate
+import eu.kanade.domain.chapter.model.copyFromSChapter
+import eu.kanade.domain.chapter.model.toSChapter
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.DownloadProvider
 import eu.kanade.tachiyomi.source.Source
@@ -14,6 +14,9 @@ import eu.kanade.tachiyomi.source.isLocal
 import eu.kanade.tachiyomi.source.model.SChapter
 import eu.kanade.tachiyomi.source.online.HttpSource
 import eu.kanade.tachiyomi.util.chapter.ChapterRecognition
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.toChapterUpdate
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.lang.Long.max

+ 2 - 2
app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithTrackServiceTwoWay.kt

@@ -1,13 +1,13 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.toChapterUpdate
 import eu.kanade.domain.track.interactor.InsertTrack
 import eu.kanade.domain.track.model.Track
 import eu.kanade.domain.track.model.toDbTrack
 import eu.kanade.tachiyomi.data.track.TrackService
 import eu.kanade.tachiyomi.util.system.logcat
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.toChapterUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/interactor/UpdateChapter.kt

@@ -1,9 +1,9 @@
 package eu.kanade.domain.chapter.interactor
 
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.ChapterUpdate
 
 class UpdateChapter(
     private val chapterRepository: ChapterRepository,

+ 18 - 52
app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt

@@ -2,64 +2,30 @@ package eu.kanade.domain.chapter.model
 
 import eu.kanade.tachiyomi.data.database.models.ChapterImpl
 import eu.kanade.tachiyomi.source.model.SChapter
+import tachiyomi.domain.chapter.model.Chapter
 import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter
 
-data class Chapter(
-    val id: Long,
-    val mangaId: Long,
-    val read: Boolean,
-    val bookmark: Boolean,
-    val lastPageRead: Long,
-    val dateFetch: Long,
-    val sourceOrder: Long,
-    val url: String,
-    val name: String,
-    val dateUpload: Long,
-    val chapterNumber: Float,
-    val scanlator: String?,
-) {
-    val isRecognizedNumber: Boolean
-        get() = chapterNumber >= 0f
-
-    fun toSChapter(): SChapter {
-        return SChapter.create().also {
-            it.url = url
-            it.name = name
-            it.date_upload = dateUpload
-            it.chapter_number = chapterNumber
-            it.scanlator = scanlator
-        }
-    }
-
-    fun copyFromSChapter(sChapter: SChapter): Chapter {
-        return this.copy(
-            name = sChapter.name,
-            url = sChapter.url,
-            dateUpload = sChapter.date_upload,
-            chapterNumber = sChapter.chapter_number,
-            scanlator = sChapter.scanlator?.ifBlank { null },
-        )
+// TODO: Remove when all deps are migrated
+fun Chapter.toSChapter(): SChapter {
+    return SChapter.create().also {
+        it.url = url
+        it.name = name
+        it.date_upload = dateUpload
+        it.chapter_number = chapterNumber
+        it.scanlator = scanlator
     }
+}
 
-    companion object {
-        fun create() = Chapter(
-            id = -1,
-            mangaId = -1,
-            read = false,
-            bookmark = false,
-            lastPageRead = 0,
-            dateFetch = 0,
-            sourceOrder = 0,
-            url = "",
-            name = "",
-            dateUpload = -1,
-            chapterNumber = -1f,
-            scanlator = null,
-        )
-    }
+fun Chapter.copyFromSChapter(sChapter: SChapter): Chapter {
+    return this.copy(
+        name = sChapter.name,
+        url = sChapter.url,
+        dateUpload = sChapter.date_upload,
+        chapterNumber = sChapter.chapter_number,
+        scanlator = sChapter.scanlator?.ifBlank { null },
+    )
 }
 
-// TODO: Remove when all deps are migrated
 fun Chapter.toDbChapter(): DbChapter = ChapterImpl().also {
     it.id = id
     it.manga_id = mangaId

+ 4 - 2
app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt

@@ -1,12 +1,14 @@
 package eu.kanade.domain.chapter.model
 
-import eu.kanade.domain.manga.model.Manga
-import eu.kanade.domain.manga.model.TriStateFilter
+import eu.kanade.domain.manga.model.downloadedFilter
 import eu.kanade.domain.manga.model.isLocal
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.model.Download
 import eu.kanade.tachiyomi.ui.manga.ChapterItem
 import eu.kanade.tachiyomi.util.chapter.getChapterSort
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.TriStateFilter
 
 /**
  * Applies the view filters to the list of chapters obtained from the database.

+ 2 - 2
app/src/main/java/eu/kanade/domain/chapter/repository/ChapterRepository.kt

@@ -1,8 +1,8 @@
 package eu.kanade.domain.chapter.repository
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import kotlinx.coroutines.flow.Flow
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.ChapterUpdate
 
 interface ChapterRepository {
 

+ 2 - 2
app/src/main/java/eu/kanade/domain/download/interactor/DeleteDownload.kt

@@ -1,10 +1,10 @@
 package eu.kanade.domain.download.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 class DeleteDownload(
     private val sourceManager: SourceManager,

+ 1 - 1
app/src/main/java/eu/kanade/domain/history/interactor/GetNextChapters.kt

@@ -1,10 +1,10 @@
 package eu.kanade.domain.history.interactor
 
 import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.history.repository.HistoryRepository
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.tachiyomi.util.chapter.getChapterSort
+import tachiyomi.domain.chapter.model.Chapter
 import kotlin.math.max
 
 class GetNextChapters(

+ 1 - 1
app/src/main/java/eu/kanade/domain/library/model/LibraryManga.kt

@@ -1,6 +1,6 @@
 package eu.kanade.domain.library.model
 
-import eu.kanade.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.Manga
 
 data class LibraryManga(
     val manga: Manga,

+ 1 - 1
app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt

@@ -1,6 +1,5 @@
 package eu.kanade.domain.library.service
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.core.preference.PreferenceStore
 import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
 import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD
@@ -9,6 +8,7 @@ import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ
 import eu.kanade.tachiyomi.widget.ExtendedNavigationView
 import tachiyomi.domain.library.model.LibraryDisplayMode
 import tachiyomi.domain.library.model.LibrarySort
+import tachiyomi.domain.manga.model.Manga
 
 class LibraryPreferences(
     private val preferenceStore: PreferenceStore,

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/GetDuplicateLibraryManga.kt

@@ -1,7 +1,7 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
+import tachiyomi.domain.manga.model.Manga
 
 class GetDuplicateLibraryManga(
     private val mangaRepository: MangaRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/GetFavorites.kt

@@ -1,8 +1,8 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
 import kotlinx.coroutines.flow.Flow
+import tachiyomi.domain.manga.model.Manga
 
 class GetFavorites(
     private val mangaRepository: MangaRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/GetManga.kt

@@ -1,10 +1,10 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
 import eu.kanade.tachiyomi.util.system.logcat
 import kotlinx.coroutines.flow.Flow
 import logcat.LogPriority
+import tachiyomi.domain.manga.model.Manga
 
 class GetManga(
     private val mangaRepository: MangaRepository,

+ 2 - 2
app/src/main/java/eu/kanade/domain/manga/interactor/GetMangaWithChapters.kt

@@ -1,11 +1,11 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.chapter.repository.ChapterRepository
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.combine
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 class GetMangaWithChapters(
     private val mangaRepository: MangaRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/NetworkToLocalManga.kt

@@ -1,7 +1,7 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
+import tachiyomi.domain.manga.model.Manga
 
 class NetworkToLocalManga(
     private val mangaRepository: MangaRepository,

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/SetMangaChapterFlags.kt

@@ -1,7 +1,7 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.repository.MangaRepository
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 
 class SetMangaChapterFlags(

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt

@@ -1,11 +1,11 @@
 package eu.kanade.domain.manga.interactor
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.hasCustomCover
 import eu.kanade.domain.manga.model.isLocal
 import eu.kanade.domain.manga.repository.MangaRepository
 import eu.kanade.tachiyomi.data.cache.CoverCache
 import eu.kanade.tachiyomi.source.model.SManga
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get

+ 2 - 1
app/src/main/java/eu/kanade/domain/manga/model/ComicInfo.kt

@@ -1,11 +1,12 @@
 package eu.kanade.domain.manga.model
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.tachiyomi.source.model.SManga
 import kotlinx.serialization.Serializable
 import nl.adaptivity.xmlutil.serialization.XmlElement
 import nl.adaptivity.xmlutil.serialization.XmlSerialName
 import nl.adaptivity.xmlutil.serialization.XmlValue
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 const val COMIC_INFO_FILE = "ComicInfo.xml"
 

+ 45 - 191
app/src/main/java/eu/kanade/domain/manga/model/Manga.kt

@@ -4,215 +4,69 @@ import eu.kanade.domain.base.BasePreferences
 import eu.kanade.tachiyomi.data.cache.CoverCache
 import eu.kanade.tachiyomi.source.LocalSource
 import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.model.UpdateStrategy
 import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
-import eu.kanade.tachiyomi.widget.ExtendedNavigationView
-import tachiyomi.domain.manga.model.MangaUpdate
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.TriStateFilter
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
-import java.io.Serializable
 
-data class Manga(
-    val id: Long,
-    val source: Long,
-    val favorite: Boolean,
-    val lastUpdate: Long,
-    val dateAdded: Long,
-    val viewerFlags: Long,
-    val chapterFlags: Long,
-    val coverLastModified: Long,
-    val url: String,
-    val title: String,
-    val artist: String?,
-    val author: String?,
-    val description: String?,
-    val genre: List<String>?,
-    val status: Long,
-    val thumbnailUrl: String?,
-    val updateStrategy: UpdateStrategy,
-    val initialized: Boolean,
-) : Serializable {
+// TODO: move these into the domain model
+val Manga.readingModeType: Long
+    get() = viewerFlags and ReadingModeType.MASK.toLong()
 
-    val sorting: Long
-        get() = chapterFlags and CHAPTER_SORTING_MASK
+val Manga.orientationType: Long
+    get() = viewerFlags and OrientationType.MASK.toLong()
 
-    val displayMode: Long
-        get() = chapterFlags and CHAPTER_DISPLAY_MASK
-
-    val unreadFilterRaw: Long
-        get() = chapterFlags and CHAPTER_UNREAD_MASK
-
-    val downloadedFilterRaw: Long
-        get() = chapterFlags and CHAPTER_DOWNLOADED_MASK
-
-    val bookmarkedFilterRaw: Long
-        get() = chapterFlags and CHAPTER_BOOKMARKED_MASK
-
-    val readingModeType: Long
-        get() = viewerFlags and ReadingModeType.MASK.toLong()
-
-    val orientationType: Long
-        get() = viewerFlags and OrientationType.MASK.toLong()
-
-    val unreadFilter: TriStateFilter
-        get() = when (unreadFilterRaw) {
-            CHAPTER_SHOW_UNREAD -> TriStateFilter.ENABLED_IS
-            CHAPTER_SHOW_READ -> TriStateFilter.ENABLED_NOT
+val Manga.downloadedFilter: TriStateFilter
+    get() {
+        if (forceDownloaded()) return TriStateFilter.ENABLED_IS
+        return when (downloadedFilterRaw) {
+            Manga.CHAPTER_SHOW_DOWNLOADED -> TriStateFilter.ENABLED_IS
+            Manga.CHAPTER_SHOW_NOT_DOWNLOADED -> TriStateFilter.ENABLED_NOT
             else -> TriStateFilter.DISABLED
         }
-
-    val downloadedFilter: TriStateFilter
-        get() {
-            if (forceDownloaded()) return TriStateFilter.ENABLED_IS
-            return when (downloadedFilterRaw) {
-                CHAPTER_SHOW_DOWNLOADED -> TriStateFilter.ENABLED_IS
-                CHAPTER_SHOW_NOT_DOWNLOADED -> TriStateFilter.ENABLED_NOT
-                else -> TriStateFilter.DISABLED
-            }
-        }
-
-    val bookmarkedFilter: TriStateFilter
-        get() = when (bookmarkedFilterRaw) {
-            CHAPTER_SHOW_BOOKMARKED -> TriStateFilter.ENABLED_IS
-            CHAPTER_SHOW_NOT_BOOKMARKED -> TriStateFilter.ENABLED_NOT
-            else -> TriStateFilter.DISABLED
-        }
-
-    fun chaptersFiltered(): Boolean {
-        return unreadFilter != TriStateFilter.DISABLED ||
-            downloadedFilter != TriStateFilter.DISABLED ||
-            bookmarkedFilter != TriStateFilter.DISABLED
-    }
-
-    fun forceDownloaded(): Boolean {
-        return favorite && Injekt.get<BasePreferences>().downloadedOnly().get()
-    }
-
-    fun sortDescending(): Boolean {
-        return chapterFlags and CHAPTER_SORT_DIR_MASK == CHAPTER_SORT_DESC
-    }
-
-    fun toSManga(): SManga = SManga.create().also {
-        it.url = url
-        it.title = title
-        it.artist = artist
-        it.author = author
-        it.description = description
-        it.genre = genre.orEmpty().joinToString()
-        it.status = status.toInt()
-        it.thumbnail_url = thumbnailUrl
-        it.initialized = initialized
-    }
-
-    fun copyFrom(other: SManga): Manga {
-        val author = other.author ?: author
-        val artist = other.artist ?: artist
-        val description = other.description ?: description
-        val genres = if (other.genre != null) {
-            other.getGenres()
-        } else {
-            genre
-        }
-        val thumbnailUrl = other.thumbnail_url ?: thumbnailUrl
-        return this.copy(
-            author = author,
-            artist = artist,
-            description = description,
-            genre = genres,
-            thumbnailUrl = thumbnailUrl,
-            status = other.status.toLong(),
-            updateStrategy = other.update_strategy,
-            initialized = other.initialized && initialized,
-        )
-    }
-
-    companion object {
-        // Generic filter that does not filter anything
-        const val SHOW_ALL = 0x00000000L
-
-        const val CHAPTER_SORT_DESC = 0x00000000L
-        const val CHAPTER_SORT_ASC = 0x00000001L
-        const val CHAPTER_SORT_DIR_MASK = 0x00000001L
-
-        const val CHAPTER_SHOW_UNREAD = 0x00000002L
-        const val CHAPTER_SHOW_READ = 0x00000004L
-        const val CHAPTER_UNREAD_MASK = 0x00000006L
-
-        const val CHAPTER_SHOW_DOWNLOADED = 0x00000008L
-        const val CHAPTER_SHOW_NOT_DOWNLOADED = 0x00000010L
-        const val CHAPTER_DOWNLOADED_MASK = 0x00000018L
-
-        const val CHAPTER_SHOW_BOOKMARKED = 0x00000020L
-        const val CHAPTER_SHOW_NOT_BOOKMARKED = 0x00000040L
-        const val CHAPTER_BOOKMARKED_MASK = 0x00000060L
-
-        const val CHAPTER_SORTING_SOURCE = 0x00000000L
-        const val CHAPTER_SORTING_NUMBER = 0x00000100L
-        const val CHAPTER_SORTING_UPLOAD_DATE = 0x00000200L
-        const val CHAPTER_SORTING_MASK = 0x00000300L
-
-        const val CHAPTER_DISPLAY_NAME = 0x00000000L
-        const val CHAPTER_DISPLAY_NUMBER = 0x00100000L
-        const val CHAPTER_DISPLAY_MASK = 0x00100000L
-
-        fun create() = Manga(
-            id = -1L,
-            url = "",
-            title = "",
-            source = -1L,
-            favorite = false,
-            lastUpdate = 0L,
-            dateAdded = 0L,
-            viewerFlags = 0L,
-            chapterFlags = 0L,
-            coverLastModified = 0L,
-            artist = null,
-            author = null,
-            description = null,
-            genre = null,
-            status = 0L,
-            thumbnailUrl = null,
-            updateStrategy = UpdateStrategy.ALWAYS_UPDATE,
-            initialized = false,
-        )
     }
+fun Manga.chaptersFiltered(): Boolean {
+    return unreadFilter != TriStateFilter.DISABLED ||
+        downloadedFilter != TriStateFilter.DISABLED ||
+        bookmarkedFilter != TriStateFilter.DISABLED
 }
-
-enum class TriStateFilter {
-    DISABLED, // Disable filter
-    ENABLED_IS, // Enabled with "is" filter
-    ENABLED_NOT, // Enabled with "not" filter
+fun Manga.forceDownloaded(): Boolean {
+    return favorite && Injekt.get<BasePreferences>().downloadedOnly().get()
 }
 
-fun TriStateFilter.toTriStateGroupState(): ExtendedNavigationView.Item.TriStateGroup.State {
-    return when (this) {
-        TriStateFilter.DISABLED -> ExtendedNavigationView.Item.TriStateGroup.State.IGNORE
-        TriStateFilter.ENABLED_IS -> ExtendedNavigationView.Item.TriStateGroup.State.INCLUDE
-        TriStateFilter.ENABLED_NOT -> ExtendedNavigationView.Item.TriStateGroup.State.EXCLUDE
-    }
+fun Manga.toSManga(): SManga = SManga.create().also {
+    it.url = url
+    it.title = title
+    it.artist = artist
+    it.author = author
+    it.description = description
+    it.genre = genre.orEmpty().joinToString()
+    it.status = status.toInt()
+    it.thumbnail_url = thumbnailUrl
+    it.initialized = initialized
 }
 
-fun Manga.toMangaUpdate(): MangaUpdate {
-    return MangaUpdate(
-        id = id,
-        source = source,
-        favorite = favorite,
-        lastUpdate = lastUpdate,
-        dateAdded = dateAdded,
-        viewerFlags = viewerFlags,
-        chapterFlags = chapterFlags,
-        coverLastModified = coverLastModified,
-        url = url,
-        title = title,
-        artist = artist,
+fun Manga.copyFrom(other: SManga): Manga {
+    val author = other.author ?: author
+    val artist = other.artist ?: artist
+    val description = other.description ?: description
+    val genres = if (other.genre != null) {
+        other.getGenres()
+    } else {
+        genre
+    }
+    val thumbnailUrl = other.thumbnail_url ?: thumbnailUrl
+    return this.copy(
         author = author,
+        artist = artist,
         description = description,
-        genre = genre,
-        status = status,
+        genre = genres,
         thumbnailUrl = thumbnailUrl,
-        updateStrategy = updateStrategy,
-        initialized = initialized,
+        status = other.status.toLong(),
+        updateStrategy = other.update_strategy,
+        initialized = other.initialized && initialized,
     )
 }
 

+ 0 - 13
app/src/main/java/eu/kanade/domain/manga/model/MangaCover.kt

@@ -1,13 +0,0 @@
-package eu.kanade.domain.manga.model
-
-import tachiyomi.domain.manga.model.MangaCover
-
-fun Manga.asMangaCover(): MangaCover {
-    return MangaCover(
-        mangaId = id,
-        sourceId = source,
-        isMangaFavorite = favorite,
-        url = thumbnailUrl,
-        lastModified = coverLastModified,
-    )
-}

+ 1 - 1
app/src/main/java/eu/kanade/domain/manga/repository/MangaRepository.kt

@@ -1,8 +1,8 @@
 package eu.kanade.domain.manga.repository
 
 import eu.kanade.domain.library.model.LibraryManga
-import eu.kanade.domain.manga.model.Manga
 import kotlinx.coroutines.flow.Flow
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 
 interface MangaRepository {

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt

@@ -15,7 +15,6 @@ import androidx.compose.ui.platform.LocalContext
 import androidx.paging.LoadState
 import androidx.paging.compose.LazyPagingItems
 import eu.kanade.data.source.NoResultsException
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.components.BrowseSourceComfortableGrid
 import eu.kanade.presentation.browse.components.BrowseSourceCompactGrid
 import eu.kanade.presentation.browse.components.BrowseSourceList
@@ -27,6 +26,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.source.LocalSource
 import kotlinx.coroutines.flow.StateFlow
 import tachiyomi.domain.library.model.LibraryDisplayMode
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun BrowseSourceContent(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt

@@ -8,7 +8,6 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.components.GlobalSearchCardRow
 import eu.kanade.presentation.browse.components.GlobalSearchErrorResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchLoadingResultItem
@@ -23,6 +22,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchState
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
 import eu.kanade.tachiyomi.util.system.LocaleHelper
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun GlobalSearchScreen(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/MigrateMangaScreen.kt

@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.lazy.items
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.components.AppBar
 import eu.kanade.presentation.components.EmptyScreen
 import eu.kanade.presentation.components.FastScrollLazyColumn
@@ -13,6 +12,7 @@ import eu.kanade.presentation.components.Scaffold
 import eu.kanade.presentation.manga.components.BaseMangaListItem
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaState
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun MigrateMangaScreen(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt

@@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.ui.res.stringResource
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.components.GlobalSearchCardRow
 import eu.kanade.presentation.browse.components.GlobalSearchEmptyResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchErrorResultItem
@@ -19,6 +18,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchState
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
 import eu.kanade.tachiyomi.util.system.LocaleHelper
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun MigrateSearchScreen(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt

@@ -11,12 +11,12 @@ import androidx.compose.runtime.getValue
 import androidx.compose.ui.unit.dp
 import androidx.paging.LoadState
 import androidx.paging.compose.LazyPagingItems
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.InLibraryBadge
 import eu.kanade.presentation.components.CommonMangaItemDefaults
 import eu.kanade.presentation.components.MangaComfortableGridItem
 import eu.kanade.presentation.util.plus
 import kotlinx.coroutines.flow.StateFlow
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaCover
 
 @Composable

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt

@@ -11,12 +11,12 @@ import androidx.compose.runtime.getValue
 import androidx.compose.ui.unit.dp
 import androidx.paging.LoadState
 import androidx.paging.compose.LazyPagingItems
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.InLibraryBadge
 import eu.kanade.presentation.components.CommonMangaItemDefaults
 import eu.kanade.presentation.components.MangaCompactGridItem
 import eu.kanade.presentation.util.plus
 import kotlinx.coroutines.flow.StateFlow
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaCover
 
 @Composable

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceDialogs.kt

@@ -7,8 +7,8 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.res.stringResource
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun RemoveMangaDialog(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt

@@ -8,13 +8,13 @@ import androidx.compose.ui.unit.dp
 import androidx.paging.LoadState
 import androidx.paging.compose.LazyPagingItems
 import androidx.paging.compose.items
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.InLibraryBadge
 import eu.kanade.presentation.components.CommonMangaItemDefaults
 import eu.kanade.presentation.components.LazyColumn
 import eu.kanade.presentation.components.MangaListItem
 import eu.kanade.presentation.util.plus
 import kotlinx.coroutines.flow.StateFlow
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaCover
 
 @Composable

+ 2 - 2
app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchCardRow.kt

@@ -8,9 +8,9 @@ import androidx.compose.material3.MaterialTheme
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.runtime.getValue
-import eu.kanade.domain.manga.model.Manga
-import eu.kanade.domain.manga.model.asMangaCover
 import eu.kanade.presentation.util.padding
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.asMangaCover
 
 @Composable
 fun GlobalSearchCardRow(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/components/SettingsItems.kt

@@ -22,7 +22,7 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
-import eu.kanade.domain.manga.model.TriStateFilter
+import tachiyomi.domain.manga.model.TriStateFilter
 
 @Composable
 fun TriStateItem(

+ 4 - 2
app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt

@@ -22,14 +22,16 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
-import eu.kanade.domain.manga.model.Manga
-import eu.kanade.domain.manga.model.TriStateFilter
+import eu.kanade.domain.manga.model.downloadedFilter
+import eu.kanade.domain.manga.model.forceDownloaded
 import eu.kanade.presentation.components.RadioItem
 import eu.kanade.presentation.components.SortItem
 import eu.kanade.presentation.components.TabbedDialog
 import eu.kanade.presentation.components.TabbedDialogPaddings
 import eu.kanade.presentation.components.TriStateItem
 import eu.kanade.tachiyomi.R
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.TriStateFilter
 
 @Composable
 fun ChapterSettingsDialog(

+ 3 - 2
app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt

@@ -47,8 +47,7 @@ import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.util.fastAll
 import androidx.compose.ui.util.fastAny
 import androidx.compose.ui.util.fastMap
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
+import eu.kanade.domain.manga.model.chaptersFiltered
 import eu.kanade.presentation.components.ChapterDownloadAction
 import eu.kanade.presentation.components.ExtendedFloatingActionButton
 import eu.kanade.presentation.components.LazyColumn
@@ -73,6 +72,8 @@ import eu.kanade.tachiyomi.ui.manga.ChapterItem
 import eu.kanade.tachiyomi.ui.manga.MangaScreenState
 import eu.kanade.tachiyomi.ui.manga.chapterDecimalFormat
 import eu.kanade.tachiyomi.util.lang.toRelativeString
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import java.text.DateFormat
 import java.util.Date
 

+ 1 - 1
app/src/main/java/eu/kanade/presentation/manga/components/BaseMangaListItem.kt

@@ -14,9 +14,9 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.components.MangaCover
 import eu.kanade.presentation.util.padding
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun BaseMangaListItem(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt

@@ -42,13 +42,13 @@ import androidx.core.view.updatePadding
 import coil.imageLoader
 import coil.request.ImageRequest
 import coil.size.Size
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.components.DropdownMenu
 import eu.kanade.presentation.components.Scaffold
 import eu.kanade.presentation.manga.EditCoverAction
 import eu.kanade.presentation.util.clickableNoIndication
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView
+import tachiyomi.domain.manga.model.Manga
 
 @Composable
 fun MangaCoverDialog(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt

@@ -72,7 +72,6 @@ import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import coil.compose.AsyncImage
 import com.google.accompanist.flowlayout.FlowRow
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.components.MangaCover
 import eu.kanade.presentation.components.TextButton
 import eu.kanade.presentation.util.clickableNoIndication
@@ -81,6 +80,7 @@ import eu.kanade.presentation.util.secondaryItemAlpha
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.util.system.copyToClipboard
+import tachiyomi.domain.manga.model.Manga
 import kotlin.math.roundToInt
 
 private val whitespaceLineRegex = Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE))

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt

@@ -50,7 +50,7 @@ import uy.kohesive.injekt.api.get
 import java.io.FileOutputStream
 import java.util.Date
 import kotlin.math.max
-import eu.kanade.domain.manga.model.Manga as DomainManga
+import tachiyomi.domain.manga.model.Manga as DomainManga
 
 class BackupManager(
     private val context: Context,

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt

@@ -1,6 +1,5 @@
 package eu.kanade.tachiyomi.data.backup.models
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.database.models.ChapterImpl
 import eu.kanade.tachiyomi.data.database.models.MangaImpl
 import eu.kanade.tachiyomi.data.database.models.TrackImpl
@@ -8,6 +7,7 @@ import eu.kanade.tachiyomi.source.model.UpdateStrategy
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
 import kotlinx.serialization.Serializable
 import kotlinx.serialization.protobuf.ProtoNumber
+import tachiyomi.domain.manga.model.Manga
 
 @Suppress("DEPRECATION")
 @Serializable

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt

@@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.cache
 import android.content.Context
 import android.text.format.Formatter
 import com.jakewharton.disklrucache.DiskLruCache
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.util.storage.DiskUtil
 import eu.kanade.tachiyomi.util.storage.saveTo
@@ -13,6 +12,7 @@ import kotlinx.serialization.json.Json
 import okhttp3.Response
 import okio.buffer
 import okio.sink
+import tachiyomi.domain.chapter.model.Chapter
 import uy.kohesive.injekt.injectLazy
 import java.io.File
 import java.io.IOException

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt

@@ -1,8 +1,8 @@
 package eu.kanade.tachiyomi.data.cache
 
 import android.content.Context
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.util.storage.DiskUtil
+import tachiyomi.domain.manga.model.Manga
 import java.io.File
 import java.io.IOException
 import java.io.InputStream

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverFetcher.kt

@@ -30,7 +30,7 @@ import okio.sink
 import tachiyomi.domain.manga.model.MangaCover
 import uy.kohesive.injekt.injectLazy
 import java.io.File
-import eu.kanade.domain.manga.model.Manga as DomainManga
+import tachiyomi.domain.manga.model.Manga as DomainManga
 
 /**
  * A [Fetcher] that fetches cover image for [Manga] object.

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/coil/MangaCoverKeyer.kt

@@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.data.database.models.toDomainManga
 import tachiyomi.domain.manga.model.MangaCover
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
-import eu.kanade.domain.manga.model.Manga as DomainManga
+import tachiyomi.domain.manga.model.Manga as DomainManga
 
 class MangaKeyer : Keyer<Manga> {
     override fun key(data: Manga, options: Options): String {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt

@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.data.database.models
 
 import eu.kanade.tachiyomi.source.model.SChapter
 import java.io.Serializable
-import eu.kanade.domain.chapter.model.Chapter as DomainChapter
+import tachiyomi.domain.chapter.model.Chapter as DomainChapter
 
 interface Chapter : SChapter, Serializable {
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt

@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.data.database.models
 import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
-import eu.kanade.domain.manga.model.Manga as DomainManga
+import tachiyomi.domain.manga.model.Manga as DomainManga
 
 interface Manga : SManga {
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt

@@ -4,9 +4,7 @@ import android.content.Context
 import androidx.core.net.toUri
 import com.hippo.unifile.UniFile
 import eu.kanade.core.util.mapNotNullKeys
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.download.service.DownloadPreferences
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.extension.ExtensionManager
 import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.source.SourceManager
@@ -32,6 +30,8 @@ import kotlinx.coroutines.flow.shareIn
 import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.withTimeout
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.util.concurrent.ConcurrentHashMap

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt

@@ -2,9 +2,7 @@ package eu.kanade.tachiyomi.data.download
 
 import android.content.Context
 import eu.kanade.domain.category.interactor.GetCategories
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.download.service.DownloadPreferences
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.download.model.Download
 import eu.kanade.tachiyomi.data.download.model.DownloadQueue
@@ -15,6 +13,8 @@ import eu.kanade.tachiyomi.util.lang.launchIO
 import eu.kanade.tachiyomi.util.system.logcat
 import kotlinx.coroutines.runBlocking
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadPendingDeleter.kt

@@ -2,12 +2,12 @@ package eu.kanade.tachiyomi.data.download
 
 import android.content.Context
 import androidx.core.content.edit
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
 import kotlinx.serialization.Serializable
 import kotlinx.serialization.decodeFromString
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt

@@ -3,9 +3,7 @@ package eu.kanade.tachiyomi.data.download
 import android.content.Context
 import androidx.core.net.toUri
 import com.hippo.unifile.UniFile
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.download.service.DownloadPreferences
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.util.storage.DiskUtil
@@ -14,6 +12,8 @@ import kotlinx.coroutines.MainScope
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadStore.kt

@@ -4,7 +4,6 @@ import android.content.Context
 import androidx.core.content.edit
 import eu.kanade.domain.chapter.interactor.GetChapter
 import eu.kanade.domain.manga.interactor.GetManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.download.model.Download
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.source.online.HttpSource
@@ -13,6 +12,7 @@ import kotlinx.serialization.Serializable
 import kotlinx.serialization.decodeFromString
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt

@@ -3,11 +3,10 @@ package eu.kanade.tachiyomi.data.download
 import android.content.Context
 import com.hippo.unifile.UniFile
 import com.jakewharton.rxrelay.PublishRelay
-import eu.kanade.domain.chapter.model.Chapter
+import eu.kanade.domain.chapter.model.toSChapter
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.manga.model.COMIC_INFO_FILE
 import eu.kanade.domain.manga.model.ComicInfo
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.getComicInfo
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.cache.ChapterCache
@@ -38,6 +37,8 @@ import rx.Observable
 import rx.android.schedulers.AndroidSchedulers
 import rx.schedulers.Schedulers
 import rx.subscriptions.CompositeSubscription
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.io.BufferedOutputStream

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt

@@ -1,13 +1,13 @@
 package eu.kanade.tachiyomi.data.download.model
 
 import eu.kanade.domain.chapter.interactor.GetChapter
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.manga.interactor.GetManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.source.online.HttpSource
 import rx.subjects.PublishSubject
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt

@@ -1,8 +1,6 @@
 package eu.kanade.tachiyomi.data.download.model
 
 import eu.kanade.core.util.asFlow
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.download.DownloadStore
 import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.util.lang.launchNonCancellable
@@ -17,6 +15,8 @@ import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.flow.shareIn
 import rx.Observable
 import rx.subjects.PublishSubject
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import java.util.concurrent.CopyOnWriteArrayList
 
 class DownloadQueue(

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt

@@ -13,8 +13,6 @@ import androidx.core.app.NotificationManagerCompat
 import coil.imageLoader
 import coil.request.ImageRequest
 import coil.transform.CircleCropTransformation
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.core.security.SecurityPreferences
 import eu.kanade.tachiyomi.data.download.Downloader
@@ -27,6 +25,8 @@ import eu.kanade.tachiyomi.util.lang.launchUI
 import eu.kanade.tachiyomi.util.system.notification
 import eu.kanade.tachiyomi.util.system.notificationBuilder
 import eu.kanade.tachiyomi.util.system.notificationManager
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.injectLazy
 import java.text.DecimalFormat
 import java.text.DecimalFormatSymbols

+ 5 - 3
app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt

@@ -11,15 +11,14 @@ import eu.kanade.domain.category.interactor.GetCategories
 import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
 import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
 import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.library.model.LibraryManga
 import eu.kanade.domain.library.service.LibraryPreferences
 import eu.kanade.domain.manga.interactor.GetLibraryManga
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
-import eu.kanade.domain.manga.model.toMangaUpdate
+import eu.kanade.domain.manga.model.copyFrom
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.domain.track.interactor.GetTracks
 import eu.kanade.domain.track.interactor.InsertTrack
 import eu.kanade.domain.track.model.toDbTrack
@@ -65,6 +64,9 @@ import kotlinx.coroutines.sync.Semaphore
 import kotlinx.coroutines.sync.withPermit
 import logcat.LogPriority
 import tachiyomi.domain.category.model.Category
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.toMangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.io.File

+ 3 - 3
app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt

@@ -10,11 +10,8 @@ import androidx.core.content.ContextCompat
 import androidx.core.net.toUri
 import eu.kanade.domain.chapter.interactor.GetChapter
 import eu.kanade.domain.chapter.interactor.UpdateChapter
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.toChapterUpdate
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.manga.interactor.GetManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.backup.BackupRestoreService
 import eu.kanade.tachiyomi.data.download.DownloadManager
@@ -33,6 +30,9 @@ import eu.kanade.tachiyomi.util.system.notificationManager
 import eu.kanade.tachiyomi.util.system.toShareIntent
 import eu.kanade.tachiyomi.util.system.toast
 import kotlinx.coroutines.runBlocking
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.toChapterUpdate
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import uy.kohesive.injekt.injectLazy

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/track/EnhancedTrackService.kt

@@ -1,9 +1,9 @@
 package eu.kanade.tachiyomi.data.track
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.track.model.Track
 import eu.kanade.tachiyomi.data.track.model.TrackSearch
 import eu.kanade.tachiyomi.source.Source
+import tachiyomi.domain.manga.model.Manga
 
 /**
  * An Enhanced Track Service will never prompt the user to match a manga with the remote.

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt

@@ -4,13 +4,13 @@ import android.content.Context
 import android.content.SharedPreferences
 import android.graphics.Color
 import androidx.annotation.StringRes
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.models.Track
 import eu.kanade.tachiyomi.data.track.EnhancedTrackService
 import eu.kanade.tachiyomi.data.track.TrackService
 import eu.kanade.tachiyomi.data.track.model.TrackSearch
 import eu.kanade.tachiyomi.source.Source
+import tachiyomi.domain.manga.model.Manga
 import java.security.MessageDigest
 import eu.kanade.domain.track.model.Track as DomainTrack
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt

@@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.track.komga
 import android.content.Context
 import android.graphics.Color
 import androidx.annotation.StringRes
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.models.Track
 import eu.kanade.tachiyomi.data.track.EnhancedTrackService
@@ -12,6 +11,7 @@ import eu.kanade.tachiyomi.data.track.model.TrackSearch
 import eu.kanade.tachiyomi.source.Source
 import okhttp3.Dns
 import okhttp3.OkHttpClient
+import tachiyomi.domain.manga.model.Manga
 import eu.kanade.domain.track.model.Track as DomainTrack
 
 class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt

@@ -9,8 +9,8 @@ import eu.kanade.tachiyomi.data.track.EnhancedTrackService
 import eu.kanade.tachiyomi.data.track.TrackService
 import eu.kanade.tachiyomi.data.track.model.TrackSearch
 import eu.kanade.tachiyomi.source.Source
-import eu.kanade.domain.manga.model.Manga as DomainManga
 import eu.kanade.domain.track.model.Track as DomainTrack
+import tachiyomi.domain.manga.model.Manga as DomainManga
 
 class Suwayomi(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService {
     val api by lazy { TachideskApi() }

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt

@@ -1,11 +1,11 @@
 package eu.kanade.tachiyomi.ui.browse.migration
 
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.hasCustomCover
 import eu.kanade.domain.track.interactor.GetTracks
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.cache.CoverCache
 import kotlinx.coroutines.runBlocking
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import uy.kohesive.injekt.injectLazy

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaScreenModel.kt

@@ -4,7 +4,6 @@ import androidx.compose.runtime.Immutable
 import cafe.adriel.voyager.core.model.StateScreenModel
 import cafe.adriel.voyager.core.model.coroutineScope
 import eu.kanade.domain.manga.interactor.GetFavorites
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.source.Source
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.util.system.logcat
@@ -17,6 +16,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt

@@ -30,10 +30,9 @@ import eu.kanade.domain.category.interactor.SetMangaCategories
 import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
 import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
 import eu.kanade.domain.chapter.interactor.UpdateChapter
-import eu.kanade.domain.chapter.model.toChapterUpdate
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.hasCustomCover
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.domain.track.interactor.GetTracks
 import eu.kanade.domain.track.interactor.InsertTrack
 import eu.kanade.presentation.components.LoadingScreen
@@ -50,6 +49,8 @@ import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
 import eu.kanade.tachiyomi.util.lang.launchIO
 import eu.kanade.tachiyomi.util.lang.withUIContext
 import kotlinx.coroutines.flow.update
+import tachiyomi.domain.chapter.model.toChapterUpdate
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt

@@ -4,7 +4,6 @@ import androidx.compose.runtime.Immutable
 import cafe.adriel.voyager.core.model.coroutineScope
 import eu.kanade.domain.base.BasePreferences
 import eu.kanade.domain.manga.interactor.GetManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.source.service.SourcePreferences
 import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.source.SourceManager
@@ -12,6 +11,7 @@ import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchScreenModel
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt

@@ -22,7 +22,6 @@ import cafe.adriel.voyager.core.model.rememberScreenModel
 import cafe.adriel.voyager.core.screen.Screen
 import cafe.adriel.voyager.navigator.LocalNavigator
 import cafe.adriel.voyager.navigator.currentOrThrow
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.BrowseSourceContent
 import eu.kanade.presentation.components.ExtendedFloatingActionButton
 import eu.kanade.presentation.components.Scaffold
@@ -36,6 +35,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen
 import eu.kanade.tachiyomi.ui.webview.WebViewScreen
 import eu.kanade.tachiyomi.util.Constants
 import kotlinx.coroutines.launch
+import tachiyomi.domain.manga.model.Manga
 
 data class SourceSearchScreen(
     private val oldManga: Manga,

+ 4 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt

@@ -27,9 +27,9 @@ import eu.kanade.domain.manga.interactor.GetDuplicateLibraryManga
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.manga.interactor.NetworkToLocalManga
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
+import eu.kanade.domain.manga.model.copyFrom
 import eu.kanade.domain.manga.model.toDomainManga
-import eu.kanade.domain.manga.model.toMangaUpdate
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.domain.source.interactor.GetRemoteManga
 import eu.kanade.domain.source.service.SourcePreferences
 import eu.kanade.domain.track.interactor.InsertTrack
@@ -71,6 +71,8 @@ import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
 import tachiyomi.domain.category.model.Category
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.toMangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.util.Date

+ 4 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt

@@ -8,9 +8,9 @@ import cafe.adriel.voyager.core.model.coroutineScope
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.manga.interactor.NetworkToLocalManga
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
+import eu.kanade.domain.manga.model.copyFrom
 import eu.kanade.domain.manga.model.toDomainManga
-import eu.kanade.domain.manga.model.toMangaUpdate
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.domain.source.service.SourcePreferences
 import eu.kanade.tachiyomi.extension.ExtensionManager
 import eu.kanade.tachiyomi.source.CatalogueSource
@@ -25,6 +25,8 @@ import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
 import logcat.LogPriority
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.toMangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.util.concurrent.Executors

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt

@@ -4,7 +4,6 @@ import androidx.compose.runtime.Immutable
 import cafe.adriel.voyager.core.model.StateScreenModel
 import cafe.adriel.voyager.core.model.coroutineScope
 import eu.kanade.core.util.insertSeparators
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.history.interactor.GetHistory
 import eu.kanade.domain.history.interactor.GetNextChapters
 import eu.kanade.domain.history.interactor.RemoveHistory
@@ -25,6 +24,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
 import tachiyomi.domain.history.model.HistoryWithRelations
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt

@@ -17,7 +17,6 @@ import cafe.adriel.voyager.navigator.Navigator
 import cafe.adriel.voyager.navigator.currentOrThrow
 import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
 import cafe.adriel.voyager.navigator.tab.TabOptions
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.presentation.history.HistoryScreen
 import eu.kanade.presentation.history.components.HistoryDeleteAllDialog
 import eu.kanade.presentation.history.components.HistoryDeleteDialog
@@ -29,6 +28,7 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.receiveAsFlow
+import tachiyomi.domain.chapter.model.Chapter
 
 object HistoryTab : Tab {
 

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt

@@ -20,13 +20,11 @@ import eu.kanade.domain.category.interactor.GetCategories
 import eu.kanade.domain.category.interactor.SetMangaCategories
 import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
 import eu.kanade.domain.chapter.interactor.SetReadStatus
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.history.interactor.GetNextChapters
 import eu.kanade.domain.library.model.LibraryManga
 import eu.kanade.domain.library.service.LibraryPreferences
 import eu.kanade.domain.manga.interactor.GetLibraryManga
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.isLocal
 import eu.kanade.domain.track.interactor.GetTracksPerManga
 import eu.kanade.presentation.library.components.LibraryToolbarTitle
@@ -55,8 +53,10 @@ import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.update
 import tachiyomi.domain.category.model.Category
+import tachiyomi.domain.chapter.model.Chapter
 import tachiyomi.domain.library.model.LibrarySort
 import tachiyomi.domain.library.model.sort
+import tachiyomi.domain.manga.model.Manga
 import tachiyomi.domain.manga.model.MangaUpdate
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt

@@ -29,7 +29,6 @@ import cafe.adriel.voyager.navigator.currentOrThrow
 import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
 import cafe.adriel.voyager.navigator.tab.TabOptions
 import eu.kanade.domain.library.model.LibraryManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.isLocal
 import eu.kanade.presentation.components.ChangeCategoryDialog
 import eu.kanade.presentation.components.DeleteLibraryMangaDialog
@@ -57,6 +56,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.launch
 import tachiyomi.domain.category.model.Category
 import tachiyomi.domain.library.model.display
+import tachiyomi.domain.manga.model.Manga
 
 object LibraryTab : Tab {
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaCoverScreenModel.kt

@@ -11,7 +11,6 @@ import coil.request.ImageRequest
 import coil.size.Size
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.cache.CoverCache
 import eu.kanade.tachiyomi.data.saver.Image
@@ -26,6 +25,7 @@ import eu.kanade.tachiyomi.util.system.toShareIntent
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt

@@ -22,9 +22,8 @@ import cafe.adriel.voyager.core.screen.uniqueScreenKey
 import cafe.adriel.voyager.navigator.LocalNavigator
 import cafe.adriel.voyager.navigator.Navigator
 import cafe.adriel.voyager.navigator.currentOrThrow
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.hasCustomCover
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.presentation.components.ChangeCategoryDialog
 import eu.kanade.presentation.components.DuplicateMangaDialog
 import eu.kanade.presentation.components.LoadingScreen
@@ -56,6 +55,8 @@ import eu.kanade.tachiyomi.util.system.toShareIntent
 import eu.kanade.tachiyomi.util.system.toast
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 class MangaScreen(
     private val mangaId: Long,

+ 6 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt

@@ -19,17 +19,15 @@ import eu.kanade.domain.chapter.interactor.SetMangaDefaultChapterFlags
 import eu.kanade.domain.chapter.interactor.SetReadStatus
 import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
 import eu.kanade.domain.chapter.interactor.UpdateChapter
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.library.service.LibraryPreferences
 import eu.kanade.domain.manga.interactor.GetDuplicateLibraryManga
 import eu.kanade.domain.manga.interactor.GetMangaWithChapters
 import eu.kanade.domain.manga.interactor.SetMangaChapterFlags
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
-import eu.kanade.domain.manga.model.TriStateFilter
+import eu.kanade.domain.manga.model.downloadedFilter
 import eu.kanade.domain.manga.model.isLocal
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.domain.track.interactor.GetTracks
 import eu.kanade.domain.track.model.toDbTrack
 import eu.kanade.domain.ui.UiPreferences
@@ -70,6 +68,10 @@ import kotlinx.coroutines.isActive
 import kotlinx.coroutines.launch
 import logcat.LogPriority
 import tachiyomi.domain.category.model.Category
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.chapter.model.ChapterUpdate
+import tachiyomi.domain.manga.model.Manga
+import tachiyomi.domain.manga.model.TriStateFilter
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.text.DecimalFormat

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt

@@ -45,7 +45,7 @@ import com.google.android.material.slider.Slider
 import com.google.android.material.transition.platform.MaterialContainerTransform
 import dev.chrisbanes.insetter.applyInsetter
 import eu.kanade.domain.base.BasePreferences
-import eu.kanade.domain.manga.model.Manga
+import eu.kanade.domain.manga.model.orientationType
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 import eu.kanade.tachiyomi.data.notification.Notifications
@@ -94,6 +94,7 @@ import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.sample
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.injectLazy
 import kotlin.math.abs
 import kotlin.math.max

+ 4 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -9,15 +9,15 @@ import androidx.lifecycle.viewModelScope
 import eu.kanade.domain.base.BasePreferences
 import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
 import eu.kanade.domain.chapter.interactor.UpdateChapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.chapter.model.toDbChapter
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.history.interactor.GetNextChapters
 import eu.kanade.domain.history.interactor.UpsertHistory
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.manga.interactor.SetMangaViewerFlags
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.isLocal
+import eu.kanade.domain.manga.model.orientationType
+import eu.kanade.domain.manga.model.readingModeType
 import eu.kanade.domain.track.interactor.GetTracks
 import eu.kanade.domain.track.interactor.InsertTrack
 import eu.kanade.domain.track.model.toDbTrack
@@ -75,7 +75,9 @@ import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.ChapterUpdate
 import tachiyomi.domain.history.model.HistoryUpdate
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.util.Date

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt

@@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.reader.loader
 
 import android.content.Context
 import com.github.junrar.exception.UnsupportedRarV5Exception
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.DownloadProvider
@@ -13,6 +12,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource
 import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
 import eu.kanade.tachiyomi.util.lang.withIOContext
 import eu.kanade.tachiyomi.util.system.logcat
+import tachiyomi.domain.manga.model.Manga
 
 /**
  * Loader used to retrieve the [PageLoader] for a given chapter.

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt

@@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.reader.loader
 import android.app.Application
 import android.net.Uri
 import com.hippo.unifile.UniFile
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.database.models.toDomainChapter
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.DownloadProvider
@@ -12,6 +11,7 @@ import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
 import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
 import rx.Observable
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.injectLazy
 import java.io.File
 

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt

@@ -6,6 +6,8 @@ import android.view.LayoutInflater
 import androidx.core.view.isVisible
 import androidx.core.widget.NestedScrollView
 import androidx.lifecycle.lifecycleScope
+import eu.kanade.domain.manga.model.orientationType
+import eu.kanade.domain.manga.model.readingModeType
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.preference.PreferenceValues
 import eu.kanade.tachiyomi.databinding.ReaderReadingModeSettingsBinding

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt

@@ -1,8 +1,8 @@
 package eu.kanade.tachiyomi.ui.reader.viewer
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.tachiyomi.data.database.models.toDomainChapter
 import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
+import tachiyomi.domain.chapter.model.Chapter
 import kotlin.math.floor
 
 private val pattern = Regex("""\d+""")

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt

@@ -11,13 +11,13 @@ import androidx.core.text.bold
 import androidx.core.text.buildSpannedString
 import androidx.core.text.inSpans
 import androidx.core.view.isVisible
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.databinding.ReaderTransitionViewBinding
 import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader
 import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
 import eu.kanade.tachiyomi.util.system.dpToPx
+import tachiyomi.domain.manga.model.Manga
 import kotlin.math.roundToInt
 
 class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt

@@ -14,7 +14,6 @@ import eu.kanade.core.util.insertSeparators
 import eu.kanade.domain.chapter.interactor.GetChapter
 import eu.kanade.domain.chapter.interactor.SetReadStatus
 import eu.kanade.domain.chapter.interactor.UpdateChapter
-import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.library.service.LibraryPreferences
 import eu.kanade.domain.manga.interactor.GetManga
 import eu.kanade.domain.ui.UiPreferences
@@ -43,6 +42,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import logcat.LogPriority
+import tachiyomi.domain.chapter.model.ChapterUpdate
 import tachiyomi.domain.updates.model.UpdatesWithRelations
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt

@@ -3,12 +3,13 @@ package eu.kanade.tachiyomi.util
 import android.content.Context
 import eu.kanade.domain.download.service.DownloadPreferences
 import eu.kanade.domain.manga.interactor.UpdateManga
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.hasCustomCover
 import eu.kanade.domain.manga.model.isLocal
+import eu.kanade.domain.manga.model.toSManga
 import eu.kanade.tachiyomi.data.cache.CoverCache
 import eu.kanade.tachiyomi.source.LocalSource
 import eu.kanade.tachiyomi.source.model.SManga
+import tachiyomi.domain.manga.model.Manga
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.io.InputStream

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt

@@ -1,10 +1,10 @@
 package eu.kanade.tachiyomi.util.chapter
 
-import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.chapter.model.applyFilters
-import eu.kanade.domain.manga.model.Manga
 import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.ui.manga.ChapterItem
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 /**
  * Gets next unread chapter with filters and sorting applied

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSorter.kt

@@ -1,7 +1,7 @@
 package eu.kanade.tachiyomi.util.chapter
 
-import eu.kanade.domain.chapter.model.Chapter
-import eu.kanade.domain.manga.model.Manga
+import tachiyomi.domain.chapter.model.Chapter
+import tachiyomi.domain.manga.model.Manga
 
 fun getChapterSort(manga: Manga, sortDescending: Boolean = manga.sortDescending()): (Chapter, Chapter) -> Int {
     return when (manga.sorting) {

+ 36 - 0
domain/src/main/java/tachiyomi/domain/chapter/model/Chapter.kt

@@ -0,0 +1,36 @@
+package tachiyomi.domain.chapter.model
+
+data class Chapter(
+    val id: Long,
+    val mangaId: Long,
+    val read: Boolean,
+    val bookmark: Boolean,
+    val lastPageRead: Long,
+    val dateFetch: Long,
+    val sourceOrder: Long,
+    val url: String,
+    val name: String,
+    val dateUpload: Long,
+    val chapterNumber: Float,
+    val scanlator: String?,
+) {
+    val isRecognizedNumber: Boolean
+        get() = chapterNumber >= 0f
+
+    companion object {
+        fun create() = Chapter(
+            id = -1,
+            mangaId = -1,
+            read = false,
+            bookmark = false,
+            lastPageRead = 0,
+            dateFetch = 0,
+            sourceOrder = 0,
+            url = "",
+            name = "",
+            dateUpload = -1,
+            chapterNumber = -1f,
+            scanlator = null,
+        )
+    }
+}

+ 1 - 1
app/src/main/java/eu/kanade/domain/chapter/model/ChapterUpdate.kt → domain/src/main/java/tachiyomi/domain/chapter/model/ChapterUpdate.kt

@@ -1,4 +1,4 @@
-package eu.kanade.domain.chapter.model
+package tachiyomi.domain.chapter.model
 
 data class ChapterUpdate(
     val id: Long,

+ 110 - 0
domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt

@@ -0,0 +1,110 @@
+package tachiyomi.domain.manga.model
+
+import eu.kanade.tachiyomi.source.model.UpdateStrategy
+import java.io.Serializable
+
+data class Manga(
+    val id: Long,
+    val source: Long,
+    val favorite: Boolean,
+    val lastUpdate: Long,
+    val dateAdded: Long,
+    val viewerFlags: Long,
+    val chapterFlags: Long,
+    val coverLastModified: Long,
+    val url: String,
+    val title: String,
+    val artist: String?,
+    val author: String?,
+    val description: String?,
+    val genre: List<String>?,
+    val status: Long,
+    val thumbnailUrl: String?,
+    val updateStrategy: UpdateStrategy,
+    val initialized: Boolean,
+) : Serializable {
+
+    val sorting: Long
+        get() = chapterFlags and CHAPTER_SORTING_MASK
+
+    val displayMode: Long
+        get() = chapterFlags and CHAPTER_DISPLAY_MASK
+
+    val unreadFilterRaw: Long
+        get() = chapterFlags and CHAPTER_UNREAD_MASK
+
+    val downloadedFilterRaw: Long
+        get() = chapterFlags and CHAPTER_DOWNLOADED_MASK
+
+    val bookmarkedFilterRaw: Long
+        get() = chapterFlags and CHAPTER_BOOKMARKED_MASK
+
+    val unreadFilter: TriStateFilter
+        get() = when (unreadFilterRaw) {
+            CHAPTER_SHOW_UNREAD -> TriStateFilter.ENABLED_IS
+            CHAPTER_SHOW_READ -> TriStateFilter.ENABLED_NOT
+            else -> TriStateFilter.DISABLED
+        }
+
+    val bookmarkedFilter: TriStateFilter
+        get() = when (bookmarkedFilterRaw) {
+            CHAPTER_SHOW_BOOKMARKED -> TriStateFilter.ENABLED_IS
+            CHAPTER_SHOW_NOT_BOOKMARKED -> TriStateFilter.ENABLED_NOT
+            else -> TriStateFilter.DISABLED
+        }
+
+    fun sortDescending(): Boolean {
+        return chapterFlags and CHAPTER_SORT_DIR_MASK == CHAPTER_SORT_DESC
+    }
+
+    companion object {
+        // Generic filter that does not filter anything
+        const val SHOW_ALL = 0x00000000L
+
+        const val CHAPTER_SORT_DESC = 0x00000000L
+        const val CHAPTER_SORT_ASC = 0x00000001L
+        const val CHAPTER_SORT_DIR_MASK = 0x00000001L
+
+        const val CHAPTER_SHOW_UNREAD = 0x00000002L
+        const val CHAPTER_SHOW_READ = 0x00000004L
+        const val CHAPTER_UNREAD_MASK = 0x00000006L
+
+        const val CHAPTER_SHOW_DOWNLOADED = 0x00000008L
+        const val CHAPTER_SHOW_NOT_DOWNLOADED = 0x00000010L
+        const val CHAPTER_DOWNLOADED_MASK = 0x00000018L
+
+        const val CHAPTER_SHOW_BOOKMARKED = 0x00000020L
+        const val CHAPTER_SHOW_NOT_BOOKMARKED = 0x00000040L
+        const val CHAPTER_BOOKMARKED_MASK = 0x00000060L
+
+        const val CHAPTER_SORTING_SOURCE = 0x00000000L
+        const val CHAPTER_SORTING_NUMBER = 0x00000100L
+        const val CHAPTER_SORTING_UPLOAD_DATE = 0x00000200L
+        const val CHAPTER_SORTING_MASK = 0x00000300L
+
+        const val CHAPTER_DISPLAY_NAME = 0x00000000L
+        const val CHAPTER_DISPLAY_NUMBER = 0x00100000L
+        const val CHAPTER_DISPLAY_MASK = 0x00100000L
+
+        fun create() = Manga(
+            id = -1L,
+            url = "",
+            title = "",
+            source = -1L,
+            favorite = false,
+            lastUpdate = 0L,
+            dateAdded = 0L,
+            viewerFlags = 0L,
+            chapterFlags = 0L,
+            coverLastModified = 0L,
+            artist = null,
+            author = null,
+            description = null,
+            genre = null,
+            status = 0L,
+            thumbnailUrl = null,
+            updateStrategy = UpdateStrategy.ALWAYS_UPDATE,
+            initialized = false,
+        )
+    }
+}

+ 10 - 0
domain/src/main/java/tachiyomi/domain/manga/model/MangaCover.kt

@@ -10,3 +10,13 @@ data class MangaCover(
     val url: String?,
     val lastModified: Long,
 )
+
+fun Manga.asMangaCover(): MangaCover {
+    return MangaCover(
+        mangaId = id,
+        sourceId = source,
+        isMangaFavorite = favorite,
+        url = thumbnailUrl,
+        lastModified = coverLastModified,
+    )
+}

+ 23 - 0
domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt

@@ -22,3 +22,26 @@ data class MangaUpdate(
     val updateStrategy: UpdateStrategy? = null,
     val initialized: Boolean? = null,
 )
+
+fun Manga.toMangaUpdate(): MangaUpdate {
+    return MangaUpdate(
+        id = id,
+        source = source,
+        favorite = favorite,
+        lastUpdate = lastUpdate,
+        dateAdded = dateAdded,
+        viewerFlags = viewerFlags,
+        chapterFlags = chapterFlags,
+        coverLastModified = coverLastModified,
+        url = url,
+        title = title,
+        artist = artist,
+        author = author,
+        description = description,
+        genre = genre,
+        status = status,
+        thumbnailUrl = thumbnailUrl,
+        updateStrategy = updateStrategy,
+        initialized = initialized,
+    )
+}

+ 7 - 0
domain/src/main/java/tachiyomi/domain/manga/model/TriStateFilter.kt

@@ -0,0 +1,7 @@
+package tachiyomi.domain.manga.model
+
+enum class TriStateFilter {
+    DISABLED, // Disable filter
+    ENABLED_IS, // Enabled with "is" filter
+    ENABLED_NOT, // Enabled with "not" filter
+}