From c52f324a13358d1797d36fc171d6d3a81578f546 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Mon, 4 Mar 2024 23:10:20 +0100 Subject: [PATCH] Add mark all read items for new articles filter --- .../app/compose/repositories/ARepository.kt | 4 ++++ .../compose/timelime/TimelineScreenModel.kt | 18 +++++++++--------- .../com/readrops/db/dao/newdao/NewItemDao.kt | 5 +++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/appcompose/src/main/java/com/readrops/app/compose/repositories/ARepository.kt b/appcompose/src/main/java/com/readrops/app/compose/repositories/ARepository.kt index 8b133d8d..16a10bfb 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/repositories/ARepository.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/repositories/ARepository.kt @@ -73,6 +73,10 @@ abstract class BaseRepository( database.newItemDao().setAllStarredItemsRead(accountId) } + open suspend fun setAllNewItemsRead(accountId: Int) { + database.newItemDao().setAllNewItemsRead(accountId) + } + open suspend fun setAllItemsReadByFeed(feedId: Int, accountId: Int) { database.newItemDao().setAllItemsReadByFeed(feedId, accountId) } diff --git a/appcompose/src/main/java/com/readrops/app/compose/timelime/TimelineScreenModel.kt b/appcompose/src/main/java/com/readrops/app/compose/timelime/TimelineScreenModel.kt index f6423675..4605fa08 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/timelime/TimelineScreenModel.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/timelime/TimelineScreenModel.kt @@ -190,25 +190,25 @@ class TimelineScreenModel( fun setAllItemsRead() { screenModelScope.launch(dispatcher) { + val accountId = currentAccount!!.id + when (_timelineState.value.filters.subFilter) { SubFilter.FEED -> repository?.setAllItemsReadByFeed( - _timelineState.value.filters.filterFeedId, - currentAccount!!.id + feedId = _timelineState.value.filters.filterFeedId, + accountId = accountId ) SubFilter.FOLDER -> repository?.setAllItemsReadByFolder( - _timelineState.value.filters.filterFolderId, - currentAccount!!.id + folderId = _timelineState.value.filters.filterFolderId, + accountId = accountId ) else -> when (_timelineState.value.filters.mainFilter) { - MainFilter.STARS -> repository?.setAllStarredItemsRead(currentAccount!!.id) - MainFilter.ALL -> repository?.setAllItemsRead(currentAccount!!.id) - MainFilter.NEW -> TODO() + MainFilter.STARS -> repository?.setAllStarredItemsRead(accountId) + MainFilter.ALL -> repository?.setAllItemsRead(accountId) + MainFilter.NEW -> repository?.setAllNewItemsRead(accountId) } - - } } } diff --git a/db/src/main/java/com/readrops/db/dao/newdao/NewItemDao.kt b/db/src/main/java/com/readrops/db/dao/newdao/NewItemDao.kt index ad83af9e..66a5fd33 100644 --- a/db/src/main/java/com/readrops/db/dao/newdao/NewItemDao.kt +++ b/db/src/main/java/com/readrops/db/dao/newdao/NewItemDao.kt @@ -29,6 +29,11 @@ abstract class NewItemDao : NewBaseDao { @Query("Update Item set read = 1 Where starred = 1 And feed_id IN (Select id From Feed Where account_id = :accountId)") abstract suspend fun setAllStarredItemsRead(accountId: Int) + @Query("Update Item set read = 1 Where DateTime(Round(pub_date / 1000), 'unixepoch') " + + "Between DateTime(DateTime(\"now\"), \"-24 hour\") And DateTime(\"now\") " + + "And feed_id IN (Select id From Feed Where account_id = :accountId)") + abstract suspend fun setAllNewItemsRead(accountId: Int) + @Query("Update Item set read = 1 Where feed_id IN " + "(Select id From Feed Where id = :feedId And account_id = :accountId)") abstract suspend fun setAllItemsReadByFeed(feedId: Int, accountId: Int)