diff --git a/app/build.gradle b/app/build.gradle index 35b1a637c..87dea662d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { minSdkVersion 21 targetSdkVersion 29 versionCode gitCommits - versionName '0.1.2' + versionName '0.1.3' buildConfigField 'String', 'GIT_BRANCH', "\"${gitBranch}\"" diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt index 861ed5710..8c5d70555 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/MangaDataRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain +import androidx.room.withTransaction import org.koin.core.KoinComponent import org.koin.core.inject import org.koitharu.kotatsu.core.db.MangaDatabase @@ -31,6 +32,10 @@ class MangaDataRepository : KoinComponent { } suspend fun storeManga(manga: Manga) { - db.mangaDao.upsert(MangaEntity.from(manga), manga.tags.map(TagEntity.Companion::fromMangaTag)) + val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) + db.withTransaction { + db.tagsDao.upsert(tags) + db.mangaDao.upsert(MangaEntity.from(manga), tags) + } } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt index a714cdeee..97a4f2f06 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/favourites/FavouritesRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain.favourites +import androidx.room.withTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.KoinComponent @@ -48,10 +49,12 @@ class FavouritesRepository : KoinComponent { suspend fun addToCategory(manga: Manga, categoryId: Long) { val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) - db.tagsDao.upsert(tags) - db.mangaDao.upsert(MangaEntity.from(manga), tags) - val entity = FavouriteEntity(manga.id, categoryId, System.currentTimeMillis()) - db.favouritesDao.add(entity) + db.withTransaction { + db.tagsDao.upsert(tags) + db.mangaDao.upsert(MangaEntity.from(manga), tags) + val entity = FavouriteEntity(manga.id, categoryId, System.currentTimeMillis()) + db.favouritesDao.add(entity) + } notifyFavouritesChanged(manga.id) } diff --git a/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt b/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt index 0346aa5bd..3c010b72c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/domain/history/HistoryRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.domain.history +import androidx.room.withTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.KoinComponent @@ -24,19 +25,22 @@ class HistoryRepository : KoinComponent { suspend fun addOrUpdate(manga: Manga, chapterId: Long, page: Int, scroll: Float) { val tags = manga.tags.map(TagEntity.Companion::fromMangaTag) - db.tagsDao.upsert(tags) - db.mangaDao.upsert(MangaEntity.from(manga), tags) - if (db.historyDao.upsert( - HistoryEntity( - mangaId = manga.id, - createdAt = System.currentTimeMillis(), - updatedAt = System.currentTimeMillis(), - chapterId = chapterId, - page = page, - scroll = scroll - ) - )) { - TrackingRepository().insertOrNothing(manga) + db.withTransaction { + db.tagsDao.upsert(tags) + db.mangaDao.upsert(MangaEntity.from(manga), tags) + if (db.historyDao.upsert( + HistoryEntity( + mangaId = manga.id, + createdAt = System.currentTimeMillis(), + updatedAt = System.currentTimeMillis(), + chapterId = chapterId, + page = page, + scroll = scroll + ) + ) + ) { + TrackingRepository().insertOrNothing(manga) + } } notifyHistoryChanged() }