mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-17 06:27:29 +01:00
Migrate things to use newer data models (#9239)
* Remove old database models from Coil * Remove old database models from TrackInfoDialogHome * Remove old database models from Backup Manager
This commit is contained in:
@@ -16,7 +16,6 @@ import eu.kanade.domain.manga.interactor.UpdateManga
|
||||
import eu.kanade.domain.manga.model.downloadedFilter
|
||||
import eu.kanade.domain.manga.model.isLocal
|
||||
import eu.kanade.domain.manga.model.toSManga
|
||||
import eu.kanade.domain.track.model.toDbTrack
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.manga.DownloadAction
|
||||
import eu.kanade.presentation.manga.components.ChapterDownloadAction
|
||||
@@ -883,10 +882,9 @@ class MangaInfoScreenModel(
|
||||
getTracks.subscribe(manga.id)
|
||||
.catch { logcat(LogPriority.ERROR, it) }
|
||||
.map { tracks ->
|
||||
val dbTracks = tracks.map { it.toDbTrack() }
|
||||
loggedServices
|
||||
// Map to TrackItem
|
||||
.map { service -> TrackItem(dbTracks.find { it.sync_id.toLong() == service.id }, service) }
|
||||
.map { service -> TrackItem(tracks.find { it.syncId == service.id }, service) }
|
||||
// Show only if the service supports this manga's source
|
||||
.filter { (it.service as? EnhancedTrackService)?.accept(source!!) ?: true }
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ import eu.kanade.presentation.track.TrackServiceSearch
|
||||
import eu.kanade.presentation.track.TrackStatusSelector
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.EnhancedTrackService
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
@@ -71,6 +70,7 @@ import tachiyomi.domain.source.service.SourceManager
|
||||
import tachiyomi.domain.track.interactor.DeleteTrack
|
||||
import tachiyomi.domain.track.interactor.GetTracks
|
||||
import tachiyomi.domain.track.interactor.InsertTrack
|
||||
import tachiyomi.domain.track.model.Track
|
||||
import tachiyomi.presentation.core.components.material.AlertDialogContent
|
||||
import tachiyomi.presentation.core.components.material.padding
|
||||
import uy.kohesive.injekt.Injekt
|
||||
@@ -149,7 +149,7 @@ data class TrackInfoDialogHomeScreen(
|
||||
TrackServiceSearchScreen(
|
||||
mangaId = mangaId,
|
||||
initialQuery = it.track?.title ?: mangaTitle,
|
||||
currentUrl = it.track?.tracking_url,
|
||||
currentUrl = it.track?.remoteUrl,
|
||||
serviceId = it.service.id,
|
||||
),
|
||||
)
|
||||
@@ -163,7 +163,7 @@ data class TrackInfoDialogHomeScreen(
|
||||
* Opens registered tracker url in browser
|
||||
*/
|
||||
private fun openTrackerInBrowser(context: Context, trackItem: TrackItem) {
|
||||
val url = trackItem.track?.tracking_url ?: return
|
||||
val url = trackItem.track?.remoteUrl ?: return
|
||||
if (url.isNotBlank()) {
|
||||
context.openInBrowser(url)
|
||||
}
|
||||
@@ -218,7 +218,7 @@ data class TrackInfoDialogHomeScreen(
|
||||
for (trackItem in trackItems) {
|
||||
try {
|
||||
val track = trackItem.track ?: continue
|
||||
val domainTrack = trackItem.service.refresh(track).toDomainTrack() ?: continue
|
||||
val domainTrack = trackItem.service.refresh(track.toDbTrack()).toDomainTrack() ?: continue
|
||||
insertTrack.await(domainTrack)
|
||||
|
||||
if (trackItem.service is EnhancedTrackService) {
|
||||
@@ -247,13 +247,12 @@ data class TrackInfoDialogHomeScreen(
|
||||
}
|
||||
}
|
||||
|
||||
private fun List<tachiyomi.domain.track.model.Track>.mapToTrackItem(): List<TrackItem> {
|
||||
val dbTracks = map { it.toDbTrack() }
|
||||
private fun List<Track>.mapToTrackItem(): List<TrackItem> {
|
||||
val loggedServices = Injekt.get<TrackManager>().services.filter { it.isLogged }
|
||||
val source = Injekt.get<SourceManager>().getOrStub(sourceId)
|
||||
return loggedServices
|
||||
// Map to TrackItem
|
||||
.map { service -> TrackItem(dbTracks.find { it.sync_id.toLong() == service.id }, service) }
|
||||
.map { service -> TrackItem(find { it.syncId == service.id }, service) }
|
||||
// Show only if the service supports this manga's source
|
||||
.filter { (it.service as? EnhancedTrackService)?.accept(source) ?: true }
|
||||
}
|
||||
@@ -291,7 +290,7 @@ private data class TrackStatusSelectorScreen(
|
||||
private class Model(
|
||||
private val track: Track,
|
||||
private val service: TrackService,
|
||||
) : StateScreenModel<Model.State>(State(track.status)) {
|
||||
) : StateScreenModel<Model.State>(State(track.status.toInt())) {
|
||||
|
||||
fun getSelections(): Map<Int, Int?> {
|
||||
return service.getStatusList().associateWith { service.getStatus(it) }
|
||||
@@ -303,7 +302,7 @@ private data class TrackStatusSelectorScreen(
|
||||
|
||||
fun setStatus() {
|
||||
coroutineScope.launchNonCancellable {
|
||||
service.setRemoteStatus(track, state.value.selection)
|
||||
service.setRemoteStatus(track.toDbTrack(), state.value.selection)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,15 +340,15 @@ private data class TrackChapterSelectorScreen(
|
||||
private class Model(
|
||||
private val track: Track,
|
||||
private val service: TrackService,
|
||||
) : StateScreenModel<Model.State>(State(track.last_chapter_read.toInt())) {
|
||||
) : StateScreenModel<Model.State>(State(track.lastChapterRead.toInt())) {
|
||||
|
||||
fun getRange(): Iterable<Int> {
|
||||
val endRange = if (track.total_chapters > 0) {
|
||||
track.total_chapters
|
||||
val endRange = if (track.totalChapters > 0) {
|
||||
track.totalChapters
|
||||
} else {
|
||||
10000
|
||||
}
|
||||
return 0..endRange
|
||||
return 0..endRange.toInt()
|
||||
}
|
||||
|
||||
fun setSelection(selection: Int) {
|
||||
@@ -358,7 +357,7 @@ private data class TrackChapterSelectorScreen(
|
||||
|
||||
fun setChapter() {
|
||||
coroutineScope.launchNonCancellable {
|
||||
service.setRemoteLastChapterRead(track, state.value.selection)
|
||||
service.setRemoteLastChapterRead(track.toDbTrack(), state.value.selection)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,7 +395,7 @@ private data class TrackScoreSelectorScreen(
|
||||
private class Model(
|
||||
private val track: Track,
|
||||
private val service: TrackService,
|
||||
) : StateScreenModel<Model.State>(State(service.displayScore(track))) {
|
||||
) : StateScreenModel<Model.State>(State(service.displayScore(track.toDbTrack()))) {
|
||||
|
||||
fun getSelections(): List<String> {
|
||||
return service.getScoreList()
|
||||
@@ -408,7 +407,7 @@ private data class TrackScoreSelectorScreen(
|
||||
|
||||
fun setScore() {
|
||||
coroutineScope.launchNonCancellable {
|
||||
service.setRemoteScore(track, state.value.selection)
|
||||
service.setRemoteScore(track.toDbTrack(), state.value.selection)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,9 +435,9 @@ private data class TrackDateSelectorScreen(
|
||||
}
|
||||
|
||||
val canRemove = if (start) {
|
||||
track.started_reading_date > 0
|
||||
track.startDate > 0
|
||||
} else {
|
||||
track.finished_reading_date > 0
|
||||
track.finishDate > 0
|
||||
}
|
||||
TrackDateSelector(
|
||||
title = if (start) {
|
||||
@@ -457,15 +456,15 @@ private data class TrackDateSelectorScreen(
|
||||
return@TrackDateSelector false
|
||||
}
|
||||
|
||||
if (start && track.finished_reading_date > 0) {
|
||||
if (start && track.finishDate > 0) {
|
||||
// Disallow start date to be set later than finish date
|
||||
val dateFinished = Instant.ofEpochMilli(track.finished_reading_date)
|
||||
val dateFinished = Instant.ofEpochMilli(track.finishDate)
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate()
|
||||
dateToCheck <= dateFinished
|
||||
} else if (!start && track.started_reading_date > 0) {
|
||||
} else if (!start && track.startDate > 0) {
|
||||
// Disallow end date to be set earlier than start date
|
||||
val dateStarted = Instant.ofEpochMilli(track.started_reading_date)
|
||||
val dateStarted = Instant.ofEpochMilli(track.startDate)
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate()
|
||||
dateToCheck >= dateStarted
|
||||
@@ -489,7 +488,7 @@ private data class TrackDateSelectorScreen(
|
||||
// In UTC
|
||||
val initialSelection: Long
|
||||
get() {
|
||||
val millis = (if (start) track.started_reading_date else track.finished_reading_date)
|
||||
val millis = (if (start) track.startDate else track.finishDate)
|
||||
.takeIf { it != 0L }
|
||||
?: Instant.now().toEpochMilli()
|
||||
return convertEpochMillisZone(millis, ZoneOffset.systemDefault(), ZoneOffset.UTC)
|
||||
@@ -501,9 +500,9 @@ private data class TrackDateSelectorScreen(
|
||||
val localMillis = convertEpochMillisZone(millis, ZoneOffset.UTC, ZoneOffset.systemDefault())
|
||||
coroutineScope.launchNonCancellable {
|
||||
if (start) {
|
||||
service.setRemoteStartDate(track, localMillis)
|
||||
service.setRemoteStartDate(track.toDbTrack(), localMillis)
|
||||
} else {
|
||||
service.setRemoteFinishDate(track, localMillis)
|
||||
service.setRemoteFinishDate(track.toDbTrack(), localMillis)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -600,9 +599,9 @@ private data class TrackDateRemoverScreen(
|
||||
fun removeDate() {
|
||||
coroutineScope.launchNonCancellable {
|
||||
if (start) {
|
||||
service.setRemoteStartDate(track, 0)
|
||||
service.setRemoteStartDate(track.toDbTrack(), 0)
|
||||
} else {
|
||||
service.setRemoteFinishDate(track, 0)
|
||||
service.setRemoteFinishDate(track.toDbTrack(), 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -679,7 +678,7 @@ data class TrackServiceSearchScreen(
|
||||
}
|
||||
}
|
||||
|
||||
fun registerTracking(item: Track) {
|
||||
fun registerTracking(item: TrackSearch) {
|
||||
coroutineScope.launchNonCancellable { service.registerTracking(item, mangaId) }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package eu.kanade.tachiyomi.ui.manga.track
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import tachiyomi.domain.track.model.Track
|
||||
|
||||
data class TrackItem(val track: Track?, val service: TrackService)
|
||||
|
||||
Reference in New Issue
Block a user