mirror of
https://github.com/mihonapp/mihon.git
synced 2025-01-14 20:27:16 +01:00
Merge de85b1c549
into 4a7fe44e0e
This commit is contained in:
commit
5f3d0256c8
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.domain.track.interactor
|
package eu.kanade.domain.track.interactor
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
import eu.kanade.domain.track.model.toDbTrack
|
import eu.kanade.domain.track.model.toDbTrack
|
||||||
import eu.kanade.domain.track.model.toDomainTrack
|
import eu.kanade.domain.track.model.toDomainTrack
|
||||||
import eu.kanade.tachiyomi.data.database.models.Track
|
import eu.kanade.tachiyomi.data.database.models.Track
|
||||||
@ -8,26 +9,29 @@ import eu.kanade.tachiyomi.data.track.Tracker
|
|||||||
import eu.kanade.tachiyomi.data.track.TrackerManager
|
import eu.kanade.tachiyomi.data.track.TrackerManager
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.util.lang.convertEpochMillisZone
|
import eu.kanade.tachiyomi.util.lang.convertEpochMillisZone
|
||||||
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
|
import tachiyomi.core.common.i18n.stringResource
|
||||||
import tachiyomi.core.common.util.lang.withIOContext
|
import tachiyomi.core.common.util.lang.withIOContext
|
||||||
import tachiyomi.core.common.util.lang.withNonCancellableContext
|
import tachiyomi.core.common.util.lang.withNonCancellableContext
|
||||||
|
import tachiyomi.core.common.util.lang.withUIContext
|
||||||
import tachiyomi.core.common.util.system.logcat
|
import tachiyomi.core.common.util.system.logcat
|
||||||
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
|
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
|
||||||
import tachiyomi.domain.history.interactor.GetHistory
|
import tachiyomi.domain.history.interactor.GetHistory
|
||||||
import tachiyomi.domain.manga.model.Manga
|
import tachiyomi.domain.manga.model.Manga
|
||||||
import tachiyomi.domain.track.interactor.InsertTrack
|
import tachiyomi.domain.track.interactor.InsertTrack
|
||||||
|
import tachiyomi.i18n.MR
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.time.ZoneOffset
|
import java.time.ZoneOffset
|
||||||
|
|
||||||
class AddTracks(
|
class AddTracks(
|
||||||
private val insertTrack: InsertTrack,
|
private val insertTrack: InsertTrack,
|
||||||
private val syncChapterProgressWithTrack: SyncChapterProgressWithTrack,
|
private val refreshTracks: RefreshTracks,
|
||||||
private val getChaptersByMangaId: GetChaptersByMangaId,
|
private val getChaptersByMangaId: GetChaptersByMangaId,
|
||||||
private val trackerManager: TrackerManager,
|
private val trackerManager: TrackerManager,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// TODO: update all trackers based on common data
|
|
||||||
suspend fun bind(tracker: Tracker, item: Track, mangaId: Long) = withNonCancellableContext {
|
suspend fun bind(tracker: Tracker, item: Track, mangaId: Long) = withNonCancellableContext {
|
||||||
withIOContext {
|
withIOContext {
|
||||||
val allChapters = getChaptersByMangaId.await(mangaId)
|
val allChapters = getChaptersByMangaId.await(mangaId)
|
||||||
@ -73,7 +77,23 @@ class AddTracks(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
syncChapterProgressWithTrack.await(mangaId, track, tracker)
|
val context = Injekt.get<Application>()
|
||||||
|
refreshTracks.await(mangaId)
|
||||||
|
.filter { it.first != null }
|
||||||
|
.forEach { (track, e) ->
|
||||||
|
logcat(LogPriority.ERROR, e) {
|
||||||
|
"Failed to refresh track data mangaId=$mangaId for service ${track!!.id}"
|
||||||
|
}
|
||||||
|
withUIContext {
|
||||||
|
context.toast(
|
||||||
|
context.stringResource(
|
||||||
|
MR.strings.track_error,
|
||||||
|
track!!.name,
|
||||||
|
e.message ?: "",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,12 +108,6 @@ class AddTracks(
|
|||||||
track.manga_id = manga.id
|
track.manga_id = manga.id
|
||||||
(service as Tracker).bind(track)
|
(service as Tracker).bind(track)
|
||||||
insertTrack.await(track.toDomainTrack(idRequired = false)!!)
|
insertTrack.await(track.toDomainTrack(idRequired = false)!!)
|
||||||
|
|
||||||
syncChapterProgressWithTrack.await(
|
|
||||||
manga.id,
|
|
||||||
track.toDomainTrack(idRequired = false)!!,
|
|
||||||
service,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logcat(
|
logcat(
|
||||||
@ -102,6 +116,24 @@ class AddTracks(
|
|||||||
) { "Could not match manga: ${manga.title} with service $service" }
|
) { "Could not match manga: ${manga.title} with service $service" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val context = Injekt.get<Application>()
|
||||||
|
refreshTracks.await(manga.id)
|
||||||
|
.filter { it.first != null }
|
||||||
|
.forEach { (track, e) ->
|
||||||
|
logcat(LogPriority.ERROR, e) {
|
||||||
|
"Failed to refresh track data mangaId=${manga.id} for service ${track!!.id}"
|
||||||
|
}
|
||||||
|
withUIContext {
|
||||||
|
context.toast(
|
||||||
|
context.stringResource(
|
||||||
|
MR.strings.track_error,
|
||||||
|
track!!.name,
|
||||||
|
e.message ?: "",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user