Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import com.capyreader.app.preferences.AppPreferences
import com.jocmp.capy.Account
import com.jocmp.capy.ArticleFilter
import com.jocmp.capy.ArticleNotification
import com.jocmp.capy.ArticleStatus
import com.jocmp.capy.logging.CapyLog
import com.jocmp.capy.preferences.getAndSet
import java.time.ZonedDateTime
Expand Down Expand Up @@ -164,7 +163,7 @@ class NotificationHelper(
intent.replaceExtras(Bundle())

appPreferences.filter.set(
ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
ArticleFilter.Unread()
)

return null
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/capyreader/app/preferences/HomePage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ sealed class HomePage {
fun toArticleFilter(readLaterFeedID: String? = null): ArticleFilter {
return when (this) {
is Today -> ArticleFilter.Today(todayStatus = ArticleStatus.ALL)
is Unread -> ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
is Unread -> ArticleFilter.Unread()
is Starred -> ArticleFilter.Starred()
is ReadLater -> if (readLaterFeedID != null) {
ArticleFilter.Feeds(
Expand All @@ -30,7 +30,7 @@ sealed class HomePage {
feedStatus = ArticleStatus.ALL,
)
} else {
ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
ArticleFilter.Unread()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,9 @@ fun ArticleList(
refreshingAll: Boolean,
enableMarkReadOnScroll: Boolean = false,
dimReadArticles: Boolean = true,
showIcons: Boolean = true,
) {
val options = rememberArticleOptions()
val articleOptions = options.copy(
val articleOptions = rememberArticleOptions().copy(
dim = dimReadArticles,
showIcon = options.showIcon && showIcons,
)
val currentTime = rememberCurrentTime()
val localDensity = LocalDensity.current
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ fun ArticleListBackHandler(
closeDrawer()
}

BackHandler(backAction == BackAction.NAVIGATE_TO_PARENT && filter !is ArticleFilter.Articles) {
BackHandler(backAction == BackAction.NAVIGATE_TO_PARENT && filter !is ArticleFilter.Unread) {
when(filter) {
is ArticleFilter.Feeds -> {
val folderTitle = filter.folderTitle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class ArticlePagerFactory(private val database: Database) {
since: OffsetDateTime
): PagingSource<Int, Article> {
return when (filter) {
is ArticleFilter.Articles -> articleSource(filter, query, sortOrder, since)
is ArticleFilter.Unread -> articleSource(filter, query, sortOrder, since)
is ArticleFilter.Feeds -> feedSource(filter, query, sortOrder, since)
is ArticleFilter.Folders -> folderSource(filter, query, sortOrder, since)
is ArticleFilter.SavedSearches -> savedSearchSource(filter, query, sortOrder, since)
Expand All @@ -31,7 +31,7 @@ class ArticlePagerFactory(private val database: Database) {
}

private fun articleSource(
filter: ArticleFilter.Articles,
filter: ArticleFilter.Unread,
query: String?,
sortOrder: SortOrder,
since: OffsetDateTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ fun ArticleScreen(
}

val selectFilter = {
if (!filter.hasArticlesSelected()) {
if (!filter.hasUnreadSelected()) {
openNextList { viewModel.selectArticleFilter() }
} else {
closeDrawer()
Expand Down Expand Up @@ -897,7 +897,7 @@ fun canOpenNextFeed(
filter: ArticleFilter,
range: MarkRead,
): Boolean {
return range is MarkRead.All && filter !is ArticleFilter.Articles
return range is MarkRead.All && filter !is ArticleFilter.Unread
}

fun isFeedActive(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ class ArticleScreenViewModel(
}

fun selectArticleFilter() {
updateFilter(ArticleFilter.Articles(articleStatus = UNREAD))
updateFilter(ArticleFilter.Unread())
}

fun selectToday() {
Expand Down Expand Up @@ -534,7 +534,7 @@ class ArticleScreenViewModel(
}

private fun resetToDefaultFilter() {
updateFilter(ArticleFilter.default().copy(currentStatus))
updateFilter(ArticleFilter.default())
}

private fun toggleCurrentStarred(articleID: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ fun FilterActionMenu(
}
}

if (filter !is ArticleFilter.Articles) {
if (filter !is ArticleFilter.Unread && filter !is ArticleFilter.Starred) {
val tooltip = if (hideReadArticles) {
stringResource(R.string.article_list_show_read)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fun FilterAppBarTitle(
onRequestJumpToTop: () -> Unit
) {
val text = when (filter) {
is ArticleFilter.Articles -> stringResource(R.string.filter_unread)
is ArticleFilter.Unread -> stringResource(R.string.filter_unread)
is ArticleFilter.Feeds -> {
allFeeds.find { it.id == filter.feedID }?.displayTitle()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ fun FeedList(
)
},
badge = { CountBadge(count = statusCount) },
selected = filter.hasArticlesSelected(),
selected = filter.hasUnreadSelected(),
onClick = {
onFilterSelect()
}
Expand Down
16 changes: 6 additions & 10 deletions capy/src/main/java/com/jocmp/capy/ArticleFilter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ sealed class ArticleFilter(open val status: ArticleStatus) {
return this is SavedSearches && this.savedSearchID == savedSearch.id
}

fun hasArticlesSelected(): Boolean {
return this is Articles
fun hasUnreadSelected(): Boolean {
return this is Unread
}

fun hasTodaySelected(): Boolean {
Expand All @@ -28,13 +28,9 @@ sealed class ArticleFilter(open val status: ArticleStatus) {
return this is Starred
}

fun isReadLaterFeed(feed: Feed?): Boolean {
return feed != null && isFeedSelected(feed)
}

fun withStatus(status: ArticleStatus): ArticleFilter {
return when (this) {
is Articles -> copy(articleStatus = status)
is Unread -> copy(unreadStatus = status)
is Feeds -> copy(feedStatus = status)
is Folders -> copy(folderStatus = status)
is SavedSearches -> copy(savedSearchStatus = status)
Expand All @@ -44,9 +40,9 @@ sealed class ArticleFilter(open val status: ArticleStatus) {
}

@Serializable
data class Articles(val articleStatus: ArticleStatus) : ArticleFilter(articleStatus) {
data class Unread(val unreadStatus: ArticleStatus = ArticleStatus.UNREAD) : ArticleFilter(unreadStatus) {
override val status: ArticleStatus
get() = articleStatus
get() = unreadStatus
}

@Serializable
Expand Down Expand Up @@ -85,6 +81,6 @@ sealed class ArticleFilter(open val status: ArticleStatus) {
}

companion object {
fun default() = Articles(articleStatus = ArticleStatus.ALL)
fun default() = Unread()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ internal class ReaderAccountDelegate(

override suspend fun refresh(filter: ArticleFilter, cutoffDate: ZonedDateTime?): Result<Unit> {
return withErrorHandling {
if (filter.hasArticlesSelected()) {
if (filter.hasUnreadSelected()) {
refreshTopLevelArticles()
} else {
refreshArticles(filter.toStream(source))
Expand Down Expand Up @@ -664,7 +664,7 @@ private val SubscriptionQuickAddResult.toSubscription: Subscription?

private fun ArticleFilter.toStream(source: Source): Stream {
return when (this) {
is ArticleFilter.Articles, is ArticleFilter.Today, is ArticleFilter.Starred -> Read()
is ArticleFilter.Unread, is ArticleFilter.Today, is ArticleFilter.Starred -> Read()
is ArticleFilter.Feeds -> Stream.Feed(feedID)
is ArticleFilter.Folders -> folderStream(this, source)
is ArticleFilter.SavedSearches -> UserLabel(savedSearchID)
Expand Down
4 changes: 2 additions & 2 deletions capy/src/main/java/com/jocmp/capy/articles/SidebarItem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class SidebarItem(
)

private fun articlesItem() = SidebarItem(
toFilter = { ArticleFilter.Articles(it) },
isSelected = { it is ArticleFilter.Articles },
toFilter = { ArticleFilter.Unread(it) },
isSelected = { it is ArticleFilter.Unread },
)

private fun starredItem() = SidebarItem(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,8 @@ class ArticleRecords(
val since = null

val count = when (filter) {
is ArticleFilter.Articles -> byStatus.count(
status = filter.articleStatus,
is ArticleFilter.Unread -> byStatus.count(
status = filter.status,
query = query,
since = null
)
Expand Down Expand Up @@ -332,8 +332,8 @@ class ArticleRecords(
query: String?,
): List<String> {
val ids = when (filter) {
is ArticleFilter.Articles -> byStatus.unreadArticleIDs(
filter.articleStatus,
is ArticleFilter.Unread -> byStatus.unreadArticleIDs(
filter.status,
range = range,
sortOrder = sortOrder,
query = query,
Expand Down
8 changes: 4 additions & 4 deletions capy/src/test/java/com/jocmp/capy/AccountTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class AccountTest {
.map { it.id }

val ids = account.unreadArticleIDs(
filter = ArticleFilter.Articles(ArticleStatus.ALL),
filter = ArticleFilter.Unread(ArticleStatus.ALL),
range = MarkRead.All,
sortOrder = SortOrder.NEWEST_FIRST,
query = null,
Expand Down Expand Up @@ -109,7 +109,7 @@ class AccountTest {
.map { it.id }

val ids = account.unreadArticleIDs(
filter = ArticleFilter.Articles(ArticleStatus.UNREAD),
filter = ArticleFilter.Unread(),
range = MarkRead.Before(unreadArticleIDs[1]),
sortOrder = SortOrder.NEWEST_FIRST,
query = null,
Expand Down Expand Up @@ -142,7 +142,7 @@ class AccountTest {
.map { it.id }

val ids = account.unreadArticleIDs(
filter = ArticleFilter.Articles(ArticleStatus.UNREAD),
filter = ArticleFilter.Unread(),
range = MarkRead.After(unreadArticleIDs[1]),
sortOrder = SortOrder.NEWEST_FIRST,
query = null,
Expand Down Expand Up @@ -175,7 +175,7 @@ class AccountTest {
.map { it.id }

val ids = account.unreadArticleIDs(
filter = ArticleFilter.Articles(ArticleStatus.UNREAD),
filter = ArticleFilter.Unread(),
range = MarkRead.Before(unreadArticleIDs[1]),
sortOrder = SortOrder.OLDEST_FIRST,
query = null,
Expand Down
10 changes: 7 additions & 3 deletions capy/src/test/java/com/jocmp/capy/ArticleFilterTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,15 @@ import kotlin.test.assertNotEquals
class ArticleFilterTest {
@Test
fun withStatus_copiesExistingFilter() {
val articles = ArticleFilter.default()
val filter = ArticleFilter.Feeds(
feedID = "1",
folderTitle = null,
feedStatus = ArticleStatus.ALL
)

val nextFilter = articles.withStatus(status = ArticleStatus.UNREAD)
val nextFilter = filter.withStatus(status = ArticleStatus.UNREAD)

assertNotEquals(articles.status, nextFilter.status)
assertNotEquals(filter.status, nextFilter.status)
assertEquals(expected = ArticleStatus.UNREAD, actual = nextFilter.status)
}
}
10 changes: 5 additions & 5 deletions capy/src/test/java/com/jocmp/capy/articles/SidebarItemTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class SidebarItemTest {

@Test
fun `next from article filter with a folder`() {
val filter = ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
val filter = ArticleFilter.Unread()
val folder = Folder(title = "This Is My Next Folder")

val next = findNext(
Expand All @@ -92,7 +92,7 @@ class SidebarItemTest {

@Test
fun `next from article filter with a feed`() {
val filter = ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
val filter = ArticleFilter.Unread()
val feed = feedFixture.create()

val next = findNext(
Expand All @@ -106,7 +106,7 @@ class SidebarItemTest {

@Test
fun `next from article filter that is empty`() {
val filter = ArticleFilter.Articles(articleStatus = ArticleStatus.UNREAD)
val filter = ArticleFilter.Unread()

val next = findNext(filter)

Expand Down Expand Up @@ -362,7 +362,7 @@ class SidebarItemTest {

val filters = items.map { it.toFilter(ArticleStatus.ALL) }
assertIs<ArticleFilter.Today>(filters[0])
assertIs<ArticleFilter.Articles>(filters[1])
assertIs<ArticleFilter.Unread>(filters[1])
assertIs<ArticleFilter.Starred>(filters[2])
assertIs<ArticleFilter.SavedSearches>(filters[3])
assertIs<ArticleFilter.Folders>(filters[4])
Expand All @@ -382,7 +382,7 @@ class SidebarItemTest {
val today = items[0]
assertTrue(today.isSelected(ArticleFilter.Today(ArticleStatus.ALL)))
assertNotNull(today.next)
assertTrue(today.next!!.isSelected(ArticleFilter.Articles(ArticleStatus.ALL)))
assertTrue(today.next!!.isSelected(ArticleFilter.Unread()))
assertNotNull(today.next?.next)
assertTrue(today.next!!.next!!.isSelected(ArticleFilter.Starred()))
assertNotNull(today.next?.next?.next)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ class ArticleRecordsTest {
articleRecords.markUnread(article.id)
}

val filter = ArticleFilter.Articles(ArticleStatus.UNREAD)
val filter = ArticleFilter.Unread()

val count = articleRecords.countUnread(
filter = filter,
Expand Down Expand Up @@ -601,7 +601,7 @@ class ArticleRecordsTest {
)
}

val filter = ArticleFilter.Articles(ArticleStatus.UNREAD)
val filter = ArticleFilter.Unread()

val count = articleRecords.countUnread(
filter = filter,
Expand Down
Loading