diff --git a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt index f2635eb..e0ae5e0 100644 --- a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt +++ b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt @@ -66,12 +66,19 @@ class Repository(private val api: SelfossApi, private val appSettingsService: Ap } else { if (appSettingsService.isItemCachingEnabled()) { fromDB = true + var dbItems = getDBItems().filter { + displayedItems == ItemType.ALL || + (it.unread && displayedItems == ItemType.UNREAD) || + (it.starred && displayedItems == ItemType.STARRED) + } + if (tagFilter != null) { + dbItems = dbItems.filter { it.tags.split(',').contains(tagFilter!!.tag) } + } + if (sourceFilter != null) { + dbItems = dbItems.filter { it.sourcetitle == sourceFilter!!.title } + } fetchedItems = SelfossModel.StatusAndData.succes( - getDBItems().filter { - displayedItems == ItemType.ALL || - (it.unread && displayedItems == ItemType.UNREAD) || - (it.starred && displayedItems == ItemType.STARRED) - }.map { it.toView() } + dbItems.map { it.toView() } ) } } diff --git a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/utils/EntityUtils.kt b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/utils/EntityUtils.kt index 9407a79..e6e2a81 100644 --- a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/utils/EntityUtils.kt +++ b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/utils/EntityUtils.kt @@ -65,6 +65,6 @@ fun SelfossModel.Item.toEntity(): ITEM = this.thumbnail, this.icon, this.link, - this.title.getHtmlDecoded(), + this.sourcetitle.getHtmlDecoded(), this.tags.joinToString(",") ) \ No newline at end of file diff --git a/shared/src/commonTest/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryTest.kt b/shared/src/commonTest/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryTest.kt index decac9d..61109d5 100644 --- a/shared/src/commonTest/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryTest.kt +++ b/shared/src/commonTest/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryTest.kt @@ -173,6 +173,60 @@ class RepositoryTest() { verify(atLeast = 1) { db.itemsQueries.items().executeAsList()} } + @Test + fun `Get newer items without connectivity and tag filter`() { + val itemParameter1 = FakeItemParameters() + val itemParameter2 = FakeItemParameters() + val itemParameter3 = FakeItemParameters() + itemParameter2.tags = "Test, Stuff" + itemParameter2.id = "2" + itemParameter3.tags = "Other, Tag" + itemParameter3.id = "3" + coEvery { db.itemsQueries.items().executeAsList() } returns generateTestDBItems(itemParameter1) + + generateTestDBItems(itemParameter2) + + generateTestDBItems(itemParameter3) + + every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false) + every { appSettingsService.isItemCachingEnabled() } returns true + + val repository = Repository(api, appSettingsService, connectivityStatus, db) + repository.tagFilter = SelfossModel.Tag("Test", "red", 3) + runBlocking { + repository.getNewerItems() + } + + assertSame(repository.items.size, 1) + coVerify(exactly = 0) { api.getItems("unread", 0, null, null, null, null, any()) } + verify(atLeast = 1) { db.itemsQueries.items().executeAsList()} + } + + @Test + fun `Get newer items without connectivity and source filter`() { + val itemParameter1 = FakeItemParameters() + val itemParameter2 = FakeItemParameters() + val itemParameter3 = FakeItemParameters() + itemParameter2.sourcetitle = "Test" + itemParameter2.id = "2" + itemParameter3.sourcetitle = "Other" + itemParameter3.id = "3" + coEvery { db.itemsQueries.items().executeAsList() } returns generateTestDBItems(itemParameter1) + + generateTestDBItems(itemParameter2) + + generateTestDBItems(itemParameter3) + + every { connectivityStatus.isNetworkConnected } returns MutableStateFlow(false) + every { appSettingsService.isItemCachingEnabled() } returns true + + val repository = Repository(api, appSettingsService, connectivityStatus, db) + repository.sourceFilter = SelfossModel.Source(1, "Test", listOf("tags"),"spouts\\rss\\fulltextrss", "", "b3aa8a664d08eb15d6ff1db2fa83e0d9.png") + runBlocking { + repository.getNewerItems() + } + + assertSame(repository.items.size, 1) + coVerify(exactly = 0) { api.getItems("unread", 0, null, null, null, null, any()) } + verify(atLeast = 1) { db.itemsQueries.items().executeAsList()} + } + @Test fun `Get older items`() { coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns @@ -998,6 +1052,6 @@ class FakeItemParameters() { val thumbnail = null val icon = "ba79e238383ce83c23a169929c8906ef.png" val link = "https://ilblogdellasci.wordpress.com/2022/09/09/etica-della-ricerca-sotto-i-riflettori/" - val sourcetitle = "La Chimica e la Società" - val tags = "Chimica, Testing" + var sourcetitle = "La Chimica e la Società" + var tags = "Chimica, Testing" } \ No newline at end of file