From 1569aa5dd50326dd92ea056a31ffa068a52565c3 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 12 Nov 2021 19:24:12 +0200 Subject: [PATCH] Cleanup data classes --- .idea/gradle.xml | 1 - app/build.gradle | 4 +-- app/proguard-rules.pro | 4 +-- .../kotatsu/base/domain/MangaIntent.kt | 2 +- .../kotatsu/base/ui/widgets/ChipsView.kt | 25 ++++++++++++-- .../kotatsu/core/backup/BackupEntry.kt | 2 +- .../kotatsu/core/db/entity/MangaEntity.kt | 2 +- .../core/db/entity/MangaPrefsEntity.kt | 2 +- .../kotatsu/core/db/entity/MangaTagsEntity.kt | 2 +- .../kotatsu/core/db/entity/MangaWithTags.kt | 2 +- .../core/db/entity/SuggestionEntity.kt | 2 +- .../kotatsu/core/db/entity/TagEntity.kt | 2 +- .../kotatsu/core/db/entity/TrackEntity.kt | 2 +- .../kotatsu/core/db/entity/TrackLogEntity.kt | 2 +- .../core/db/entity/TrackLogWithManga.kt | 2 +- .../koitharu/kotatsu/core/github/VersionId.kt | 28 +++++++++++++-- .../kotatsu/core/model/MangaChapter.kt | 13 ++++--- .../kotatsu/core/model/MangaHistory.kt | 2 +- .../koitharu/kotatsu/core/model/MangaPage.kt | 4 +-- .../kotatsu/core/model/MangaSource.kt | 2 +- .../koitharu/kotatsu/core/model/MangaTag.kt | 2 +- .../core/parser/site/AnibelRepository.kt | 7 ++-- .../core/parser/site/ChanRepository.kt | 7 ++-- .../core/parser/site/DesuMeRepository.kt | 7 ++-- .../core/parser/site/ExHentaiRepository.kt | 2 ++ .../core/parser/site/GroupleRepository.kt | 6 ++-- .../core/parser/site/HenChanRepository.kt | 4 ++- .../core/parser/site/MangaLibRepository.kt | 6 ++-- .../core/parser/site/MangaOwlRepository.kt | 7 ++-- .../core/parser/site/MangaTownRepository.kt | 7 ++-- .../core/parser/site/MangareadRepository.kt | 7 ++-- .../core/parser/site/NineMangaRepository.kt | 2 ++ .../core/parser/site/RemangaRepository.kt | 6 ++-- .../core/parser/site/YaoiChanRepository.kt | 4 ++- .../koitharu/kotatsu/core/ui/DateTimeAgo.kt | 34 +++++++++++++++++-- .../data/FavouriteCategoryEntity.kt | 2 +- .../favourites/data/FavouriteEntity.kt | 2 +- .../kotatsu/favourites/data/FavouriteManga.kt | 2 +- .../kotatsu/history/data/HistoryEntity.kt | 4 +-- .../kotatsu/history/data/HistoryWithManga.kt | 2 +- .../local/domain/LocalMangaRepository.kt | 3 +- 41 files changed, 168 insertions(+), 60 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 35ffc652f..a0de2a152 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -14,7 +14,6 @@ - diff --git a/app/build.gradle b/app/build.gradle index d02ff880a..9210057d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 31 - versionCode 370 - versionName '2.0-b2' + versionCode 371 + versionName '2.0-b3' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 57fe6234e..74c093891 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -5,9 +5,7 @@ public static void checkReturnedValueIsNotNull(...); public static void checkFieldIsNotNull(...); public static void checkParameterIsNotNull(...); + public static void checkNotNullParameter(...); } -keep class org.koitharu.kotatsu.core.db.entity.* { *; } --keepclassmembers public class * extends org.koitharu.kotatsu.core.parser.MangaRepository { - public (...); -} -dontwarn okhttp3.internal.platform.ConscryptPlatform \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/base/domain/MangaIntent.kt b/app/src/main/java/org/koitharu/kotatsu/base/domain/MangaIntent.kt index 98b6522b5..f4dc339c9 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/domain/MangaIntent.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/domain/MangaIntent.kt @@ -5,7 +5,7 @@ import android.net.Uri import android.os.Bundle import org.koitharu.kotatsu.core.model.Manga -data class MangaIntent( +class MangaIntent( val manga: Manga?, val mangaId: Long, val uri: Uri? diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/ChipsView.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/ChipsView.kt index eb867ec0f..d9ee9f535 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/ChipsView.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/ChipsView.kt @@ -96,11 +96,32 @@ class ChipsView @JvmOverloads constructor( } } - data class ChipModel( + class ChipModel( @DrawableRes val icon: Int, val title: CharSequence, val data: Any? = null - ) + ) { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ChipModel + + if (icon != other.icon) return false + if (title != other.title) return false + if (data != other.data) return false + + return true + } + + override fun hashCode(): Int { + var result = icon + result = 31 * result + title.hashCode() + result = 31 * result + data.hashCode() + return result + } + } fun interface OnChipClickListener { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupEntry.kt b/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupEntry.kt index 5de7d7e01..407365d3c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupEntry.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/backup/BackupEntry.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.core.backup import org.json.JSONArray -data class BackupEntry( +class BackupEntry( val name: String, val data: JSONArray ) { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaEntity.kt index d20b3b979..25ec915a3 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaEntity.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.core.model.MangaState import org.koitharu.kotatsu.core.model.MangaTag @Entity(tableName = "manga") -data class MangaEntity( +class MangaEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "manga_id") val id: Long, @ColumnInfo(name = "title") val title: String, diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaPrefsEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaPrefsEntity.kt index 7eb68a0ef..99e94b25a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaPrefsEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaPrefsEntity.kt @@ -14,7 +14,7 @@ import androidx.room.PrimaryKey onDelete = ForeignKey.CASCADE )] ) -data class MangaPrefsEntity( +class MangaPrefsEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "manga_id") val mangaId: Long, @ColumnInfo(name = "mode") val mode: Int diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaTagsEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaTagsEntity.kt index b96ff5d83..ea7f0b3d2 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaTagsEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaTagsEntity.kt @@ -20,7 +20,7 @@ import androidx.room.ForeignKey ) ] ) -data class MangaTagsEntity( +class MangaTagsEntity( @ColumnInfo(name = "manga_id", index = true) val mangaId: Long, @ColumnInfo(name = "tag_id", index = true) val tagId: Long ) \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaWithTags.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaWithTags.kt index 950fbdf33..ad80b0beb 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaWithTags.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/MangaWithTags.kt @@ -5,7 +5,7 @@ import androidx.room.Junction import androidx.room.Relation import org.koitharu.kotatsu.utils.ext.mapToSet -data class MangaWithTags( +class MangaWithTags( @Embedded val manga: MangaEntity, @Relation( parentColumn = "manga_id", diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/SuggestionEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/SuggestionEntity.kt index 896732e15..4459d56b8 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/SuggestionEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/SuggestionEntity.kt @@ -16,7 +16,7 @@ import androidx.room.PrimaryKey ) ] ) -data class SuggestionEntity( +class SuggestionEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "manga_id", index = true) val mangaId: Long, @ColumnInfo(name = "relevance") val relevance: Float, diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TagEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TagEntity.kt index 1af937d06..3e25b0bed 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TagEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TagEntity.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.core.model.MangaTag import org.koitharu.kotatsu.utils.ext.longHashCode @Entity(tableName = "tags") -data class TagEntity( +class TagEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "tag_id") val id: Long, @ColumnInfo(name = "title") val title: String, diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackEntity.kt index 57a01888f..1b5c41492 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackEntity.kt @@ -15,7 +15,7 @@ import androidx.room.PrimaryKey ) ] ) -data class TrackEntity( +class TrackEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "manga_id") val mangaId: Long, @ColumnInfo(name = "chapters_total") val totalChapters: Int, diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogEntity.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogEntity.kt index e73d34d74..a4f608c4d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogEntity.kt @@ -15,7 +15,7 @@ import androidx.room.PrimaryKey ) ] ) -data class TrackLogEntity( +class TrackLogEntity( @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Long = 0L, @ColumnInfo(name = "manga_id", index = true) val mangaId: Long, diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogWithManga.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogWithManga.kt index e32bcde6a..263e91938 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogWithManga.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/entity/TrackLogWithManga.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.core.model.TrackingLogItem import org.koitharu.kotatsu.utils.ext.mapToSet import java.util.* -data class TrackLogWithManga( +class TrackLogWithManga( @Embedded val trackLog: TrackLogEntity, @Relation( parentColumn = "manga_id", diff --git a/app/src/main/java/org/koitharu/kotatsu/core/github/VersionId.kt b/app/src/main/java/org/koitharu/kotatsu/core/github/VersionId.kt index 48fdd1e88..09557cb47 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/github/VersionId.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/github/VersionId.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.core.github import java.util.* -data class VersionId( +class VersionId( val major: Int, val minor: Int, val build: Int, val variantType: String, - val variantNumber: Int + val variantNumber: Int, ) : Comparable { override fun compareTo(other: VersionId): Int { @@ -30,6 +30,30 @@ data class VersionId( return variantNumber.compareTo(other.variantNumber) } + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as VersionId + + if (major != other.major) return false + if (minor != other.minor) return false + if (build != other.build) return false + if (variantType != other.variantType) return false + if (variantNumber != other.variantNumber) return false + + return true + } + + override fun hashCode(): Int { + var result = major + result = 31 * result + minor + result = 31 * result + build + result = 31 * result + variantType.hashCode() + result = 31 * result + variantNumber + return result + } + companion object { private fun variantWeight(variantType: String) = diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaChapter.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaChapter.kt index f0a56361c..9b0533722 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaChapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaChapter.kt @@ -9,8 +9,13 @@ data class MangaChapter( val name: String, val number: Int, val url: String, - val scanlator: String? = null, + val scanlator: String?, val uploadDate: Long, - val branch: String? = null, - val source: MangaSource -) : Parcelable \ No newline at end of file + val branch: String?, + val source: MangaSource, +) : Parcelable, Comparable { + + override fun compareTo(other: MangaChapter): Int { + return number.compareTo(other.number) + } +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaHistory.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaHistory.kt index eaf04e6c7..95f736f2b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaHistory.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaHistory.kt @@ -10,5 +10,5 @@ data class MangaHistory( val updatedAt: Date, val chapterId: Long, val page: Int, - val scroll: Int + val scroll: Int, ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaPage.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaPage.kt index a85dc14bc..7576e2da4 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaPage.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaPage.kt @@ -8,6 +8,6 @@ data class MangaPage( val id: Long, val url: String, val referer: String, - val preview: String? = null, - val source: MangaSource + val preview: String?, + val source: MangaSource, ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt index d4a6247dc..2d9018f5e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt @@ -14,7 +14,7 @@ import org.koitharu.kotatsu.local.domain.LocalMangaRepository enum class MangaSource( val title: String, val locale: String?, - val cls: Class + val cls: Class, ) : Parcelable { LOCAL("Local", null, LocalMangaRepository::class.java), READMANGA_RU("ReadManga", "ru", ReadmangaRepository::class.java), diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaTag.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaTag.kt index be5aa63d2..fe10cb690 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaTag.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaTag.kt @@ -7,5 +7,5 @@ import kotlinx.parcelize.Parcelize data class MangaTag( val title: String, val key: String, - val source: MangaSource + val source: MangaSource, ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/AnibelRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/AnibelRepository.kt index 507dab2da..f7e7a1f5b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/AnibelRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/AnibelRepository.kt @@ -87,8 +87,10 @@ class AnibelRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor name = "Глава " + a.selectFirst("a")?.text().orEmpty(), number = i + 1, url = href, + scanlator = null, + branch = null, uploadDate = 0L, - source = source + source = source, ) } ) @@ -115,8 +117,9 @@ class AnibelRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor MangaPage( id = generateUid(url), url = url, + preview = null, referer = fullUrl, - source = source + source = source, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ChanRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ChanRepository.kt index 7dde9de2e..82a0a3268 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ChanRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ChanRepository.kt @@ -88,8 +88,10 @@ abstract class ChanRepository(loaderContext: MangaLoaderContext) : RemoteMangaRe name = tr.selectFirst("a")?.text().orEmpty(), number = i + 1, url = href, + scanlator = null, + branch = null, uploadDate = dateFormat.tryParse(tr.selectFirst("div.date")?.text()), - source = source + source = source, ) } ) @@ -117,8 +119,9 @@ abstract class ChanRepository(loaderContext: MangaLoaderContext) : RemoteMangaRe MangaPage( id = generateUid(url), url = url, + preview = null, referer = fullUrl, - source = source + source = source, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt index b765d09aa..afae79bab 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt @@ -101,7 +101,9 @@ class DesuMeRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor url = "$baseChapterUrl$chid", uploadDate = it.getLong("date") * 1000, name = if (title.isEmpty()) volChap else "$volChap: $title", - number = totalChapters - i + number = totalChapters - i, + scanlator = null, + branch = null, ) }.reversed() ) @@ -116,8 +118,9 @@ class DesuMeRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor MangaPage( id = generateUid(jo.getLong("id")), referer = fullUrl, + preview = null, source = chapter.source, - url = jo.getString("img") + url = jo.getString("img"), ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ExHentaiRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ExHentaiRepository.kt index 084ce47a2..41b86750e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ExHentaiRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/ExHentaiRepository.kt @@ -143,6 +143,8 @@ class ExHentaiRepository( url = url, uploadDate = 0L, source = source, + scanlator = null, + branch = null, ) } chapters diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/GroupleRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/GroupleRepository.kt index 2f422cdad..bd29ce392 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/GroupleRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/GroupleRepository.kt @@ -142,7 +142,8 @@ abstract class GroupleRepository(loaderContext: MangaLoaderContext) : url = href, uploadDate = dateFormat.tryParse(tr.selectFirst("td.d-none")?.text()), scanlator = translators, - source = source + source = source, + branch = null, ) } ) @@ -167,8 +168,9 @@ abstract class GroupleRepository(loaderContext: MangaLoaderContext) : MangaPage( id = generateUid(url), url = url, + preview = null, referer = chapter.url, - source = source + source = source, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/HenChanRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/HenChanRepository.kt index a802986a3..626373d5a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/HenChanRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/HenChanRepository.kt @@ -50,7 +50,9 @@ class HenChanRepository(loaderContext: MangaLoaderContext) : ChanRepository(load source = source, number = 1, uploadDate = 0L, - name = manga.title + name = manga.title, + scanlator = null, + branch = null, ) ) ) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaLibRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaLibRepository.kt index efa574f8c..ed58f073c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaLibRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaLibRepository.kt @@ -118,7 +118,8 @@ open class MangaLibRepository(loaderContext: MangaLoaderContext) : item.getString("chapter_created_at").substringBefore(" ") ), scanlator = scanlator, - name = if (nameChapter.isNullOrBlank()) fullNameChapter else "$fullNameChapter - $nameChapter" + branch = null, + name = if (nameChapter.isNullOrBlank()) fullNameChapter else "$fullNameChapter - $nameChapter", ) ) } @@ -178,8 +179,9 @@ open class MangaLibRepository(loaderContext: MangaLoaderContext) : MangaPage( id = generateUid(pageUrl), url = pageUrl, + preview = null, referer = fullUrl, - source = source + source = source, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaOwlRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaOwlRepository.kt index ade883600..28e93c6d2 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaOwlRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaOwlRepository.kt @@ -101,8 +101,10 @@ class MangaOwlRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposit name = a.select("label").text(), number = i + 1, url = href, + scanlator = null, + branch = null, uploadDate = dateFormat.tryParse(li.selectFirst("small:last-of-type")?.text()), - source = MangaSource.MANGAOWL + source = MangaSource.MANGAOWL, ) } ) @@ -117,8 +119,9 @@ class MangaOwlRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposit MangaPage( id = generateUid(url), url = url, + preview = null, referer = fullUrl, - source = MangaSource.MANGAOWL + source = MangaSource.MANGAOWL, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaTownRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaTownRepository.kt index b23bce7a5..7f1285369 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaTownRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangaTownRepository.kt @@ -124,7 +124,9 @@ class MangaTownRepository(loaderContext: MangaLoaderContext) : dateFormat, li.selectFirst("span.time")?.text() ), - name = name.ifEmpty { "${manga.title} - ${i + 1}" } + name = name.ifEmpty { "${manga.title} - ${i + 1}" }, + scanlator = null, + branch = null, ) } ) @@ -143,8 +145,9 @@ class MangaTownRepository(loaderContext: MangaLoaderContext) : MangaPage( id = generateUid(href), url = href, + preview = null, referer = fullUrl, - source = MangaSource.MANGATOWN + source = MangaSource.MANGATOWN, ) } ?: parseFailed("Pages list not found") } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangareadRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangareadRepository.kt index 5cb3a1ef2..17aced99d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangareadRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/MangareadRepository.kt @@ -146,7 +146,9 @@ class MangareadRepository( dateFormat, doc2.selectFirst("span.chapter-release-date i")?.text() ), - source = MangaSource.MANGAREAD + source = MangaSource.MANGAREAD, + scanlator = null, + branch = null, ) } ) @@ -164,8 +166,9 @@ class MangareadRepository( MangaPage( id = generateUid(url), url = url, + preview = null, referer = fullUrl, - source = MangaSource.MANGAREAD + source = MangaSource.MANGAREAD, ) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/NineMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/NineMangaRepository.kt index 0c00df31a..9daee36dd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/NineMangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/NineMangaRepository.kt @@ -114,6 +114,8 @@ abstract class NineMangaRepository( url = href, uploadDate = parseChapterDateByLang(li.selectFirst("span")?.text().orEmpty()), source = source, + scanlator = null, + branch = null, ) } ) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt index bc37ead73..4b6843d19 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/RemangaRepository.kt @@ -130,7 +130,8 @@ class RemangaRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposito }, uploadDate = dateFormat.tryParse(jo.getString("upload_date")), scanlator = publishers.optJSONObject(0)?.getStringOrNull("name"), - source = MangaSource.REMANGA + source = MangaSource.REMANGA, + branch = null, ) }.asReversed() ) @@ -175,8 +176,9 @@ class RemangaRepository(loaderContext: MangaLoaderContext) : RemoteMangaReposito private fun parsePage(jo: JSONObject, referer: String) = MangaPage( id = generateUid(jo.getLong("id")), url = jo.getString("link"), + preview = null, referer = referer, - source = source + source = source, ) private companion object { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/YaoiChanRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/YaoiChanRepository.kt index 97a762c21..77edbb5b1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/YaoiChanRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/YaoiChanRepository.kt @@ -30,7 +30,9 @@ class YaoiChanRepository(loaderContext: MangaLoaderContext) : ChanRepository(loa number = i + 1, url = href, uploadDate = 0L, - source = source + source = source, + scanlator = null, + branch = null, ) } ) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/ui/DateTimeAgo.kt b/app/src/main/java/org/koitharu/kotatsu/core/ui/DateTimeAgo.kt index 8deefacfe..0d38d95ce 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/ui/DateTimeAgo.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/ui/DateTimeAgo.kt @@ -14,16 +14,35 @@ sealed class DateTimeAgo : ListModel { } } - data class MinutesAgo(val minutes: Int) : DateTimeAgo() { + class MinutesAgo(val minutes: Int) : DateTimeAgo() { + override fun format(resources: Resources): String { return resources.getQuantityString(R.plurals.minutes_ago, minutes, minutes) } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as MinutesAgo + return minutes == other.minutes + } + + override fun hashCode(): Int = minutes } - data class HoursAgo(val hours: Int) : DateTimeAgo() { + class HoursAgo(val hours: Int) : DateTimeAgo() { override fun format(resources: Resources): String { return resources.getQuantityString(R.plurals.hours_ago, hours, hours) } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as HoursAgo + return hours == other.hours + } + + override fun hashCode(): Int = hours } object Today : DateTimeAgo() { @@ -38,10 +57,19 @@ sealed class DateTimeAgo : ListModel { } } - data class DaysAgo(val days: Int) : DateTimeAgo() { + class DaysAgo(val days: Int) : DateTimeAgo() { override fun format(resources: Resources): String { return resources.getQuantityString(R.plurals.days_ago, days, days) } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as DaysAgo + return days == other.days + } + + override fun hashCode(): Int = days } object LongAgo : DateTimeAgo() { diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteCategoryEntity.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteCategoryEntity.kt index f66c87fae..aa054c441 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteCategoryEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteCategoryEntity.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.core.model.SortOrder import java.util.* @Entity(tableName = "favourite_categories") -data class FavouriteCategoryEntity( +class FavouriteCategoryEntity( @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "category_id") val categoryId: Int, @ColumnInfo(name = "created_at") val createdAt: Long, diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteEntity.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteEntity.kt index 95ae66e87..d79660a12 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteEntity.kt @@ -21,7 +21,7 @@ import org.koitharu.kotatsu.core.db.entity.MangaEntity ) ] ) -data class FavouriteEntity( +class FavouriteEntity( @ColumnInfo(name = "manga_id", index = true) val mangaId: Long, @ColumnInfo(name = "category_id", index = true) val categoryId: Long, @ColumnInfo(name = "created_at") val createdAt: Long diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteManga.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteManga.kt index 5b74bc08f..e98c84904 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteManga.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/data/FavouriteManga.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.core.db.entity.MangaEntity import org.koitharu.kotatsu.core.db.entity.MangaTagsEntity import org.koitharu.kotatsu.core.db.entity.TagEntity -data class FavouriteManga( +class FavouriteManga( @Embedded val favourite: FavouriteEntity, @Relation( parentColumn = "manga_id", diff --git a/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryEntity.kt b/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryEntity.kt index 34a75b6a5..770181595 100644 --- a/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryEntity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryEntity.kt @@ -18,14 +18,14 @@ import java.util.* ) ] ) -data class HistoryEntity( +class HistoryEntity( @PrimaryKey(autoGenerate = false) @ColumnInfo(name = "manga_id") val mangaId: Long, @ColumnInfo(name = "created_at") val createdAt: Long = System.currentTimeMillis(), @ColumnInfo(name = "updated_at") val updatedAt: Long, @ColumnInfo(name = "chapter_id") val chapterId: Long, @ColumnInfo(name = "page") val page: Int, - @ColumnInfo(name = "scroll") val scroll: Float + @ColumnInfo(name = "scroll") val scroll: Float, ) { fun toMangaHistory() = MangaHistory( diff --git a/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryWithManga.kt b/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryWithManga.kt index d1c8ee2b0..55f41adc6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryWithManga.kt +++ b/app/src/main/java/org/koitharu/kotatsu/history/data/HistoryWithManga.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.core.db.entity.MangaEntity import org.koitharu.kotatsu.core.db.entity.MangaTagsEntity import org.koitharu.kotatsu.core.db.entity.TagEntity -data class HistoryWithManga( +class HistoryWithManga( @Embedded val history: HistoryEntity, @Relation( parentColumn = "manga_id", diff --git a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt index 4361d00a6..3742f007e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt @@ -69,8 +69,9 @@ class LocalMangaRepository(private val context: Context) : MangaRepository { MangaPage( id = entryUri.longHashCode(), url = entryUri, + preview = null, referer = chapter.url, - source = MangaSource.LOCAL + source = MangaSource.LOCAL, ) } }