MangaRepositoryImpl.kt 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package eu.kanade.data.manga
  2. import eu.kanade.data.DatabaseHandler
  3. import eu.kanade.data.listOfStringsAdapter
  4. import eu.kanade.data.toLong
  5. import eu.kanade.domain.manga.model.Manga
  6. import eu.kanade.domain.manga.model.MangaUpdate
  7. import eu.kanade.domain.manga.repository.MangaRepository
  8. import eu.kanade.tachiyomi.util.system.logcat
  9. import kotlinx.coroutines.flow.Flow
  10. import logcat.LogPriority
  11. class MangaRepositoryImpl(
  12. private val handler: DatabaseHandler,
  13. ) : MangaRepository {
  14. override suspend fun getMangaById(id: Long): Manga {
  15. return handler.awaitOne { mangasQueries.getMangaById(id, mangaMapper) }
  16. }
  17. override fun getFavoritesBySourceId(sourceId: Long): Flow<List<Manga>> {
  18. return handler.subscribeToList { mangasQueries.getFavoriteBySourceId(sourceId, mangaMapper) }
  19. }
  20. override suspend fun resetViewerFlags(): Boolean {
  21. return try {
  22. handler.await { mangasQueries.resetViewerFlags() }
  23. true
  24. } catch (e: Exception) {
  25. logcat(LogPriority.ERROR, e)
  26. false
  27. }
  28. }
  29. override suspend fun update(update: MangaUpdate): Boolean {
  30. return try {
  31. handler.await {
  32. mangasQueries.update(
  33. source = update.source,
  34. url = update.url,
  35. artist = update.artist,
  36. author = update.author,
  37. description = update.description,
  38. genre = update.genre?.let(listOfStringsAdapter::encode),
  39. title = update.title,
  40. status = update.status,
  41. thumbnailUrl = update.thumbnailUrl,
  42. favorite = update.favorite?.toLong(),
  43. lastUpdate = update.lastUpdate,
  44. initialized = update.initialized?.toLong(),
  45. viewer = update.viewerFlags,
  46. chapterFlags = update.chapterFlags,
  47. coverLastModified = update.coverLastModified,
  48. dateAdded = update.dateAdded,
  49. mangaId = update.id,
  50. )
  51. }
  52. true
  53. } catch (e: Exception) {
  54. logcat(LogPriority.ERROR, e)
  55. false
  56. }
  57. }
  58. }