mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-15 13:37:29 +01:00
Minor tracking cleanups
This commit is contained in:
@@ -346,12 +346,12 @@ class MangaRestorer(
|
||||
}
|
||||
|
||||
private suspend fun restoreTracking(manga: Manga, backupTracks: List<BackupTracking>) {
|
||||
val dbTrackBySyncId = getTracks.await(manga.id).associateBy { it.syncId }
|
||||
val dbTrackByTrackerId = getTracks.await(manga.id).associateBy { it.trackerId }
|
||||
|
||||
val (existingTracks, newTracks) = backupTracks
|
||||
.mapNotNull {
|
||||
val track = it.getTrackImpl()
|
||||
val dbTrack = dbTrackBySyncId[track.syncId]
|
||||
val dbTrack = dbTrackByTrackerId[track.trackerId]
|
||||
?: // New track
|
||||
return@mapNotNull track.copy(
|
||||
id = 0, // Let DB assign new ID
|
||||
@@ -380,7 +380,7 @@ class MangaRestorer(
|
||||
existingTracks.forEach { track ->
|
||||
manga_syncQueries.update(
|
||||
track.mangaId,
|
||||
track.syncId,
|
||||
track.trackerId,
|
||||
track.remoteId,
|
||||
track.libraryId,
|
||||
track.title,
|
||||
|
||||
@@ -8,7 +8,7 @@ interface Track : Serializable {
|
||||
|
||||
var manga_id: Long
|
||||
|
||||
var sync_id: Int
|
||||
var tracker_id: Int
|
||||
|
||||
var remote_id: Long
|
||||
|
||||
@@ -40,7 +40,7 @@ interface Track : Serializable {
|
||||
|
||||
companion object {
|
||||
fun create(serviceId: Long): Track = TrackImpl().apply {
|
||||
sync_id = serviceId.toInt()
|
||||
tracker_id = serviceId.toInt()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ class TrackImpl : Track {
|
||||
|
||||
override var manga_id: Long = 0
|
||||
|
||||
override var sync_id: Int = 0
|
||||
override var tracker_id: Int = 0
|
||||
|
||||
override var remote_id: Long = 0
|
||||
|
||||
|
||||
@@ -33,6 +33,4 @@ class TrackerManager {
|
||||
fun loggedInTrackers() = trackers.filter { it.isLoggedIn }
|
||||
|
||||
fun get(id: Long) = trackers.find { it.id == id }
|
||||
|
||||
fun hasLoggedIn() = trackers.any { it.isLoggedIn }
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ class TrackSearch : Track {
|
||||
|
||||
override var manga_id: Long = 0
|
||||
|
||||
override var sync_id: Int = 0
|
||||
override var tracker_id: Int = 0
|
||||
|
||||
override var remote_id: Long = 0
|
||||
|
||||
@@ -47,7 +47,7 @@ class TrackSearch : Track {
|
||||
other as TrackSearch
|
||||
|
||||
if (manga_id != other.manga_id) return false
|
||||
if (sync_id != other.sync_id) return false
|
||||
if (tracker_id != other.tracker_id) return false
|
||||
if (remote_id != other.remote_id) return false
|
||||
|
||||
return true
|
||||
@@ -55,14 +55,14 @@ class TrackSearch : Track {
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = manga_id.hashCode()
|
||||
result = 31 * result + sync_id
|
||||
result = 31 * result + tracker_id
|
||||
result = 31 * result + remote_id.hashCode()
|
||||
return result
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun create(serviceId: Long): TrackSearch = TrackSearch().apply {
|
||||
sync_id = serviceId.toInt()
|
||||
tracker_id = serviceId.toInt()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ class LibraryScreenModel(
|
||||
if (isNotLoggedInAnyTrack || trackFiltersIsIgnored) return@tracking true
|
||||
|
||||
val mangaTracks = trackMap
|
||||
.mapValues { entry -> entry.value.map { it.syncId } }[item.libraryManga.id]
|
||||
.mapValues { entry -> entry.value.map { it.trackerId } }[item.libraryManga.id]
|
||||
.orEmpty()
|
||||
|
||||
val isExcluded = excludedTracks.isNotEmpty() && mangaTracks.fastAny { it in excludedTracks }
|
||||
@@ -257,7 +257,7 @@ class LibraryScreenModel(
|
||||
entry.value.isEmpty() -> null
|
||||
else ->
|
||||
entry.value
|
||||
.mapNotNull { trackerMap[it.syncId]?.get10PointScore(it) }
|
||||
.mapNotNull { trackerMap[it.trackerId]?.get10PointScore(it) }
|
||||
.average()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -983,7 +983,7 @@ class MangaScreenModel(
|
||||
.map { tracks ->
|
||||
loggedInTrackers
|
||||
// Map to TrackItem
|
||||
.map { service -> TrackItem(tracks.find { it.syncId == service.id }, service) }
|
||||
.map { service -> TrackItem(tracks.find { it.trackerId == service.id }, service) }
|
||||
// Show only if the service supports this manga's source
|
||||
.filter { (it.tracker as? EnhancedTracker)?.accept(source!!) ?: true }
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ data class TrackInfoDialogHomeScreen(
|
||||
val source = Injekt.get<SourceManager>().getOrStub(sourceId)
|
||||
return loggedInTrackers
|
||||
// Map to TrackItem
|
||||
.map { service -> TrackItem(find { it.syncId == service.id }, service) }
|
||||
.map { service -> TrackItem(find { it.trackerId == service.id }, service) }
|
||||
// Show only if the service supports this manga's source
|
||||
.filter { (it.tracker as? EnhancedTracker)?.accept(source) ?: true }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package eu.kanade.tachiyomi.ui.reader.model
|
||||
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@@ -23,6 +24,8 @@ data class ReaderChapter(val chapter: Chapter) {
|
||||
|
||||
private var references = 0
|
||||
|
||||
constructor(chapter: tachiyomi.domain.chapter.model.Chapter) : this(chapter.toDbChapter())
|
||||
|
||||
fun ref() {
|
||||
references++
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ class StatsScreenModel(
|
||||
val loggedInTrackerIds = loggedInTrackers.map { it.id }.toHashSet()
|
||||
return libraryManga.associate { manga ->
|
||||
val tracks = getTracks.await(manga.id)
|
||||
.fastFilter { it.syncId in loggedInTrackerIds }
|
||||
.fastFilter { it.trackerId in loggedInTrackerIds }
|
||||
|
||||
manga.id to tracks
|
||||
}
|
||||
@@ -144,7 +144,7 @@ class StatsScreenModel(
|
||||
}
|
||||
|
||||
private fun get10PointScore(track: Track): Double {
|
||||
val service = trackerManager.get(track.syncId)!!
|
||||
val service = trackerManager.get(track.trackerId)!!
|
||||
return service.get10PointScore(track)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user