From 2ba8640996d6198b66c9c9241f3e2daf77c1f69b Mon Sep 17 00:00:00 2001 From: tarsin Date: Tue, 4 Jul 2023 10:39:03 +0800 Subject: [PATCH] Let FavouriteStatusRouter handle historyDB as well --- app/src/main/java/com/hippo/ehviewer/EhDB.kt | 15 ++++----------- .../com/hippo/ehviewer/FavouriteStatusRouter.kt | 9 ++++++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index b37a210b2..8f5d58c45 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -289,18 +289,11 @@ object EhDB { } @Synchronized - fun putHistoryInfoNonRefresh(info: GalleryInfo) { + fun modifyHistoryInfoFavslotNonRefresh(gid: Long, slot: Int) { val dao = db.historyDao() - val i = dao.load(info.gid) - if (null != i) { - val historyInfo: HistoryInfo - if (info is HistoryInfo) { - historyInfo = info - } else { - historyInfo = HistoryInfo(info) - historyInfo.time = i.time - } - dao.update(historyInfo) + dao.load(gid)?.let { + it.favoriteSlot = slot + dao.update(it) } } diff --git a/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt b/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt index 40c1de2a7..d15cd4d50 100644 --- a/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt +++ b/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt @@ -25,6 +25,7 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.transform +import kotlinx.coroutines.launch object FavouriteStatusRouter { private val idGenerator = IntIdGenerator(Settings.dataMapNextId) @@ -57,7 +58,13 @@ object FavouriteStatusRouter { val globalFlow = callbackFlow> { collector = this awaitClose { error("Unreachable!!!") } - }.shareIn(listenerScope, SharingStarted.Eagerly) + }.shareIn(listenerScope, SharingStarted.Eagerly).apply { + listenerScope.launch { + collect { (gid, slot) -> + EhDB.modifyHistoryInfoFavslotNonRefresh(gid, slot) + } + } + } fun stateFlow(targetGid: Long) = globalFlow.transform { (gid, slot) -> if (targetGid == gid) emit(slot) } }