Probably fix random source crashes

This commit is contained in:
Jobobby04 2022-09-26 14:00:15 -04:00
parent 8d91c54c18
commit 89b30bd8d8
4 changed files with 10 additions and 2 deletions

View File

@ -79,6 +79,11 @@ class MangaRepositoryImpl(
override suspend fun insert(manga: Manga): Long? { override suspend fun insert(manga: Manga): Long? {
return handler.awaitOneOrNull(true) { 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( mangasQueries.insert(
source = manga.source, source = manga.source,
url = manga.url, url = manga.url,

View File

@ -260,7 +260,6 @@ open class FeedPresenter(
* @param sManga the manga from the source. * @param sManga the manga from the source.
* @return a manga from the database. * @return a manga from the database.
*/ */
@Synchronized
private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga { private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga {
var localManga = runBlocking { getManga.await(sManga.url, sourceId) } var localManga = runBlocking { getManga.await(sManga.url, sourceId) }
if (localManga == null) { if (localManga == null) {

View File

@ -219,7 +219,6 @@ open class SourceFeedPresenter(
* @param sManga the manga from the source. * @param sManga the manga from the source.
* @return a manga from the database. * @return a manga from the database.
*/ */
@Synchronized
private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga { private fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga {
var localManga = runBlocking { getManga.await(sManga.url, sourceId) } var localManga = runBlocking { getManga.await(sManga.url, sourceId) }
if (localManga == null) { if (localManga == null) {

View File

@ -206,3 +206,8 @@ selectLastInsertRow:
SELECT * SELECT *
FROM mangas FROM mangas
WHERE _id = last_insert_rowid(); WHERE _id = last_insert_rowid();
getIdByUrlAndSource:
SELECT _id
FROM mangas
WHERE url = :url AND source = :source;