mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Move more models to domain module
This commit is contained in:
		| @@ -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, | ||||
|         ) | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| package tachiyomi.domain.chapter.model | ||||
|  | ||||
| data class ChapterUpdate( | ||||
|     val id: Long, | ||||
|     val mangaId: Long? = null, | ||||
|     val read: Boolean? = null, | ||||
|     val bookmark: Boolean? = null, | ||||
|     val lastPageRead: Long? = null, | ||||
|     val dateFetch: Long? = null, | ||||
|     val sourceOrder: Long? = null, | ||||
|     val url: String? = null, | ||||
|     val name: String? = null, | ||||
|     val dateUpload: Long? = null, | ||||
|     val chapterNumber: Float? = null, | ||||
|     val scanlator: String? = null, | ||||
| ) | ||||
|  | ||||
| fun Chapter.toChapterUpdate(): ChapterUpdate { | ||||
|     return ChapterUpdate(id, mangaId, read, bookmark, lastPageRead, dateFetch, sourceOrder, url, name, dateUpload, chapterNumber, scanlator) | ||||
| } | ||||
							
								
								
									
										110
									
								
								domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
									
									
									
									
									
										Normal file
									
								
							| @@ -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,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, | ||||
|     ) | ||||
| } | ||||
|   | ||||
| @@ -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, | ||||
|     ) | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user