diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/TrackQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/TrackQueries.kt index f77400e719..74f8c6059d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/TrackQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/TrackQueries.kt @@ -1,11 +1,9 @@ package eu.kanade.tachiyomi.data.database.queries -import com.pushtorefresh.storio.sqlite.queries.DeleteQuery import com.pushtorefresh.storio.sqlite.queries.Query import eu.kanade.tachiyomi.data.database.DbProvider import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.tables.TrackTable -import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.domain.manga.models.Manga interface TrackQueries : DbProvider { @@ -26,13 +24,4 @@ interface TrackQueries : DbProvider { fun insertTracks(tracks: List) = db.put().objects(tracks).prepare() - fun deleteTrackForManga(manga: Manga, sync: TrackService) = db.delete() - .byQuery( - DeleteQuery.builder() - .table(TrackTable.TABLE) - .where("${TrackTable.COL_MANGA_ID} = ? AND ${TrackTable.COL_SYNC_ID} = ?") - .whereArgs(manga.id, sync.id) - .build(), - ) - .prepare() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index b6d20e537b..38a0dc8b87 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -94,6 +94,7 @@ import yokai.domain.manga.interactor.UpdateManga import yokai.domain.manga.models.MangaUpdate import yokai.domain.manga.models.cover import yokai.domain.storage.StorageManager +import yokai.domain.track.interactor.DeleteTrack import yokai.domain.track.interactor.GetTrack import yokai.i18n.MR import yokai.util.lang.getString @@ -114,6 +115,7 @@ class MangaDetailsPresenter( private val getManga: GetManga by injectLazy() private val updateChapter: UpdateChapter by injectLazy() private val updateManga: UpdateManga by injectLazy() + private val deleteTrack: DeleteTrack by injectLazy() private val getTrack: GetTrack by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy() @@ -1070,7 +1072,7 @@ class MangaDetailsPresenter( fun removeTracker(trackItem: TrackItem, removeFromService: Boolean) { presenterScope.launch { withContext(Dispatchers.IO) { - db.deleteTrackForManga(manga, trackItem.service).executeAsBlocking() + deleteTrack.awaitForManga(manga.id!!, trackItem.service.id) if (removeFromService && trackItem.service.canRemoveFromService()) { trackItem.service.removeFromService(trackItem.track!!) } diff --git a/app/src/main/java/yokai/core/di/DomainModule.kt b/app/src/main/java/yokai/core/di/DomainModule.kt index 09bec29885..29e7572cf5 100644 --- a/app/src/main/java/yokai/core/di/DomainModule.kt +++ b/app/src/main/java/yokai/core/di/DomainModule.kt @@ -42,6 +42,7 @@ import yokai.domain.manga.interactor.InsertManga import yokai.domain.manga.interactor.UpdateManga import yokai.domain.recents.interactor.GetRecents import yokai.domain.track.TrackRepository +import yokai.domain.track.interactor.DeleteTrack import yokai.domain.track.interactor.GetTrack fun domainModule() = module { @@ -87,5 +88,6 @@ fun domainModule() = module { factory { GetRecents(get(), get()) } single { TrackRepositoryImpl(get()) } + factory { DeleteTrack(get()) } factory { GetTrack(get()) } } diff --git a/app/src/main/java/yokai/data/track/TrackRepositoryImpl.kt b/app/src/main/java/yokai/data/track/TrackRepositoryImpl.kt index 0c6dc2ee2d..cdcc443155 100644 --- a/app/src/main/java/yokai/data/track/TrackRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/track/TrackRepositoryImpl.kt @@ -7,4 +7,7 @@ import yokai.domain.track.TrackRepository class TrackRepositoryImpl(private val handler: DatabaseHandler) : TrackRepository { override suspend fun getAllByMangaId(mangaId: Long): List = handler.awaitList { manga_syncQueries.getAllByMangaId(mangaId, Track::mapper) } + + override suspend fun deleteForManga(mangaId: Long, syncId: Long) = + handler.await { manga_syncQueries.deleteForManga(mangaId, syncId) } } diff --git a/app/src/main/java/yokai/domain/track/TrackRepository.kt b/app/src/main/java/yokai/domain/track/TrackRepository.kt index 89332a1df6..d776e5be51 100644 --- a/app/src/main/java/yokai/domain/track/TrackRepository.kt +++ b/app/src/main/java/yokai/domain/track/TrackRepository.kt @@ -4,4 +4,5 @@ import eu.kanade.tachiyomi.data.database.models.Track interface TrackRepository { suspend fun getAllByMangaId(mangaId: Long): List + suspend fun deleteForManga(mangaId: Long, syncId: Long) } diff --git a/app/src/main/java/yokai/domain/track/interactor/DeleteTrack.kt b/app/src/main/java/yokai/domain/track/interactor/DeleteTrack.kt new file mode 100644 index 0000000000..45de7d4692 --- /dev/null +++ b/app/src/main/java/yokai/domain/track/interactor/DeleteTrack.kt @@ -0,0 +1,9 @@ +package yokai.domain.track.interactor + +import yokai.domain.track.TrackRepository + +class DeleteTrack( + private val trackRepository: TrackRepository, +) { + suspend fun awaitForManga(mangaId: Long, syncId: Long) = trackRepository.deleteForManga(mangaId, syncId) +} diff --git a/data/src/commonMain/sqldelight/tachiyomi/data/manga_sync.sq b/data/src/commonMain/sqldelight/tachiyomi/data/manga_sync.sq index e6f9e330f3..aad779715f 100644 --- a/data/src/commonMain/sqldelight/tachiyomi/data/manga_sync.sq +++ b/data/src/commonMain/sqldelight/tachiyomi/data/manga_sync.sq @@ -23,3 +23,7 @@ getAllByMangaId: SELECT * FROM manga_sync WHERE manga_id = :mangaId; + +deleteForManga: +DELETE FROM manga_sync +WHERE manga_id = :mangaId AND sync_id = :syncId;