From ebd4a455d935f214a3a2e703cd82635ac39cdefd Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sun, 15 Sep 2024 13:43:24 +0200 Subject: [PATCH] Fix item opened from notification not being mark as read --- app/src/main/java/com/readrops/app/MainActivity.kt | 14 ++++++++++++-- db/src/main/java/com/readrops/db/dao/ItemDao.kt | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/readrops/app/MainActivity.kt b/app/src/main/java/com/readrops/app/MainActivity.kt index fae2bb72..b5430592 100644 --- a/app/src/main/java/com/readrops/app/MainActivity.kt +++ b/app/src/main/java/com/readrops/app/MainActivity.kt @@ -25,6 +25,7 @@ import cafe.adriel.voyager.transitions.SlideTransition import com.readrops.app.account.selection.AccountSelectionScreen import com.readrops.app.account.selection.AccountSelectionScreenModel import com.readrops.app.home.HomeScreen +import com.readrops.app.repositories.BaseRepository import com.readrops.app.sync.SyncWorker import com.readrops.app.timelime.TimelineTab import com.readrops.app.util.Migrations @@ -40,6 +41,7 @@ import org.koin.androidx.compose.KoinAndroidContext import org.koin.core.annotation.KoinExperimentalAPI import org.koin.core.component.KoinComponent import org.koin.core.component.get +import org.koin.core.parameter.parametersOf class MainActivity : ComponentActivity(), KoinComponent { @@ -122,13 +124,21 @@ class MainActivity : ComponentActivity(), KoinComponent { when { intent.hasExtra(SyncWorker.ACCOUNT_ID_KEY) -> { val accountId = intent.getIntExtra(SyncWorker.ACCOUNT_ID_KEY, -1) - get().accountDao() - .updateCurrentAccount(accountId) + val database = get().also { + it.accountDao() + .updateCurrentAccount(accountId) + } HomeScreen.openTab(TimelineTab) if (intent.hasExtra(SyncWorker.ITEM_ID_KEY)) { val itemId = intent.getIntExtra(SyncWorker.ITEM_ID_KEY, -1) + val account = database.accountDao().select(accountId) + val item = database.itemDao().select(itemId) + .apply { isRead = true } + + get(parameters = { parametersOf(account) }) + .setItemReadState(item) HomeScreen.openItemScreen(itemId) } } diff --git a/db/src/main/java/com/readrops/db/dao/ItemDao.kt b/db/src/main/java/com/readrops/db/dao/ItemDao.kt index b41e1026..e86a982f 100644 --- a/db/src/main/java/com/readrops/db/dao/ItemDao.kt +++ b/db/src/main/java/com/readrops/db/dao/ItemDao.kt @@ -16,6 +16,9 @@ import kotlinx.coroutines.flow.Flow @Dao abstract class ItemDao : BaseDao { + @Query("Select * From Item Where id = :itemId") + abstract fun select(itemId: Int): Item + @RawQuery(observedEntities = [Item::class, Feed::class, Folder::class, ItemState::class]) abstract fun selectAll(query: SupportSQLiteQuery): PagingSource