mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-08 18:18:56 +01:00
Initial implementation of favorites syncing
General code cleanup Fix some cases of duplicate galleries (not completely fixed)
This commit is contained in:
@@ -26,6 +26,10 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
override var uuid: String = UUID.randomUUID().toString()
|
||||
|
||||
var url: String? = null
|
||||
set(value) {
|
||||
//Ensure that URLs are always formatted in the same way to reduce duplicate galleries
|
||||
field = value?.let { normalizeUrl(it) }
|
||||
}
|
||||
|
||||
@Index
|
||||
var gId: String? = null
|
||||
@@ -60,7 +64,7 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
|
||||
override var tags: RealmList<Tag> = RealmList()
|
||||
|
||||
override fun getTitles() = listOf(title, altTitle).filterNotNull()
|
||||
override fun getTitles() = listOfNotNull(title, altTitle)
|
||||
|
||||
@Ignore
|
||||
override val titleFields = TITLE_FIELDS
|
||||
@@ -93,7 +97,7 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
}
|
||||
|
||||
override fun copyTo(manga: SManga) {
|
||||
url?.let { manga.url = it }
|
||||
url?.let { manga.url = normalizeUrl(it) }
|
||||
thumbnailUrl?.let { manga.thumbnail_url = it }
|
||||
|
||||
//No title bug?
|
||||
@@ -118,8 +122,8 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
ONGOING_SUFFIX.find {
|
||||
t.endsWith(it, ignoreCase = true)
|
||||
}?.let {
|
||||
manga.status = SManga.ONGOING
|
||||
}
|
||||
manga.status = SManga.ONGOING
|
||||
}
|
||||
}
|
||||
|
||||
//Build a nice looking description out of what we know
|
||||
@@ -165,6 +169,12 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
fun galleryToken(url: String) =
|
||||
splitGalleryUrl(url).last()
|
||||
|
||||
fun normalizeUrl(id: String, token: String)
|
||||
= "/g/$id/$token/?nw=always"
|
||||
|
||||
fun normalizeUrl(url: String)
|
||||
= normalizeUrl(galleryId(url), galleryToken(url))
|
||||
|
||||
val TITLE_FIELDS = listOf(
|
||||
ExGalleryMetadata::title.name,
|
||||
ExGalleryMetadata::altTitle.name
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package exh.metadata.models
|
||||
|
||||
import io.realm.*
|
||||
import io.realm.Case
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmQuery
|
||||
import java.util.*
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.KProperty
|
||||
@@ -58,7 +60,7 @@ abstract class GalleryQuery<T : SearchableGalleryMetadata>(val clazz: KClass<T>)
|
||||
is Long -> newMeta.equalTo(n, v)
|
||||
is Short -> newMeta.equalTo(n, v)
|
||||
is String -> newMeta.equalTo(n, v, Case.INSENSITIVE)
|
||||
else -> throw IllegalArgumentException("Unknown type: ${v::class.qualifiedName}!")
|
||||
else -> throw IllegalArgumentException("Unknown type: ${v::class.java.name}!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user