diff --git a/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt index d6dae150d..e9a450521 100644 --- a/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt @@ -79,6 +79,11 @@ class MangaRepositoryImpl( override suspend fun insert(manga: Manga): Long? { return handler.awaitOneOrNull(true) { + // SY --> + if (mangasQueries.getIdByUrlAndSource(manga.url, manga.source).executeAsOneOrNull() != null) { + return@awaitOneOrNull mangasQueries.getIdByUrlAndSource(manga.url, manga.source) + } + // SY <-- mangasQueries.insert( source = manga.source, url = manga.url, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt index f36359022..70af6bbba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt @@ -260,7 +260,6 @@ open class FeedPresenter( * @param sManga the manga from the source. * @return a manga from the database. */ - @Synchronized private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga { var localManga = runBlocking { getManga.await(sManga.url, sourceId) } if (localManga == null) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedPresenter.kt index b5d94178c..22a2902e8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedPresenter.kt @@ -219,7 +219,6 @@ open class SourceFeedPresenter( * @param sManga the manga from the source. * @return a manga from the database. */ - @Synchronized private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga { var localManga = runBlocking { getManga.await(sManga.url, sourceId) } if (localManga == null) { diff --git a/app/src/main/sqldelight/data/mangas.sq b/app/src/main/sqldelight/data/mangas.sq index e101feecc..55fbc571e 100644 --- a/app/src/main/sqldelight/data/mangas.sq +++ b/app/src/main/sqldelight/data/mangas.sq @@ -206,3 +206,8 @@ selectLastInsertRow: SELECT * FROM mangas WHERE _id = last_insert_rowid(); + +getIdByUrlAndSource: +SELECT _id +FROM mangas +WHERE url = :url AND source = :source;