diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2a8aa08b3a..7d10a1fbf2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -145,6 +145,7 @@ android { dependencies { implementation(projects.core) implementation(projects.data) + implementation(projects.domain) implementation(projects.i18n) implementation(projects.presentation.core) implementation(projects.sourceApi) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt index fcca32deaf..d040ea6f42 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt @@ -146,11 +146,6 @@ interface Manga : SManga { ).lowercase(Locale.getDefault()) } - fun getGenres(): List? { - return genre?.split(",") - ?.mapNotNull { tag -> tag.trim().takeUnless { it.isBlank() } } - } - fun getOriginalGenres(): List? { return (originalGenre ?: genre)?.split(",") ?.mapNotNull { tag -> tag.trim().takeUnless { it.isBlank() } } diff --git a/app/src/main/java/yokai/data/manga/models/MangaExtensions.kt b/app/src/main/java/yokai/data/manga/models/MangaExtensions.kt new file mode 100644 index 0000000000..85532db414 --- /dev/null +++ b/app/src/main/java/yokai/data/manga/models/MangaExtensions.kt @@ -0,0 +1,31 @@ +package yokai.data.manga.models + +import eu.kanade.tachiyomi.source.model.SManga +import yokai.domain.manga.models.Manga + +fun Manga.toSManga() = SManga.create().also { + it.url = url + it.title = title + it.artist = artist + it.author = author + it.description = description + it.genre = genres.orEmpty().joinToString() + it.status = status + it.thumbnail_url = thumbnailUrl + it.initialized = initialized +} + +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 genres + val thumbnailUrl = other.thumbnail_url ?: thumbnailUrl + return this.copy( + author = author, + artist = artist, + description = description, + genres = genres, + thumbnailUrl = thumbnailUrl, + ) +} diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index f4b441e1de..f3db3837f1 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -9,11 +9,11 @@ kotlin { sourceSets { val commonMain by getting { dependencies { + implementation(projects.sourceApi) } } val androidMain by getting { dependencies { - implementation(projects.sourceApi) } } } diff --git a/domain/src/androidMain/kotlin/yokai/domain/manga/models/Manga.kt b/domain/src/commonMain/kotlin/yokai/domain/manga/models/Manga.kt similarity index 95% rename from domain/src/androidMain/kotlin/yokai/domain/manga/models/Manga.kt rename to domain/src/commonMain/kotlin/yokai/domain/manga/models/Manga.kt index c1a87ef8c6..1c41f77063 100644 --- a/domain/src/androidMain/kotlin/yokai/domain/manga/models/Manga.kt +++ b/domain/src/commonMain/kotlin/yokai/domain/manga/models/Manga.kt @@ -10,7 +10,7 @@ data class Manga( val artist: String?, val author: String?, val description: String?, - val genre: String?, + val genres: List?, val status: Int, val thumbnailUrl: String?, val updateStrategy: UpdateStrategy, diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt index c0f8ef8281..b447c15b87 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt @@ -24,6 +24,11 @@ interface SManga : Serializable { var initialized: Boolean + fun getGenres(): List? { + if (genre.isNullOrBlank()) return null + return genre?.split(", ")?.map { it.trim() }?.filterNot { it.isBlank() }?.distinct() + } + fun copy() = create().also { it.url = url it.title = title