Last read order in favorites #705
(cherry picked from commit b1240e7efa)
This commit is contained in:
@@ -347,7 +347,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
set(value) = prefs.edit { putEnumValue(KEY_LOCAL_LIST_ORDER, value) }
|
set(value) = prefs.edit { putEnumValue(KEY_LOCAL_LIST_ORDER, value) }
|
||||||
|
|
||||||
var historySortOrder: ListSortOrder
|
var historySortOrder: ListSortOrder
|
||||||
get() = prefs.getEnumValue(KEY_HISTORY_ORDER, ListSortOrder.UPDATED)
|
get() = prefs.getEnumValue(KEY_HISTORY_ORDER, ListSortOrder.LAST_READ)
|
||||||
set(value) = prefs.edit { putEnumValue(KEY_HISTORY_ORDER, value) }
|
set(value) = prefs.edit { putEnumValue(KEY_HISTORY_ORDER, value) }
|
||||||
|
|
||||||
var allFavoritesSortOrder: ListSortOrder
|
var allFavoritesSortOrder: ListSortOrder
|
||||||
|
|||||||
@@ -193,8 +193,8 @@ abstract class FavouritesDao {
|
|||||||
ListSortOrder.ALPHABETIC -> "manga.title ASC"
|
ListSortOrder.ALPHABETIC -> "manga.title ASC"
|
||||||
ListSortOrder.ALPHABETIC_REVERSE -> "manga.title DESC"
|
ListSortOrder.ALPHABETIC_REVERSE -> "manga.title DESC"
|
||||||
ListSortOrder.NEW_CHAPTERS -> "IFNULL((SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id), 0) DESC"
|
ListSortOrder.NEW_CHAPTERS -> "IFNULL((SELECT chapters_new FROM tracks WHERE tracks.manga_id = manga.manga_id), 0) DESC"
|
||||||
ListSortOrder.UPDATED, // for legacy support
|
|
||||||
ListSortOrder.PROGRESS -> "IFNULL((SELECT percent FROM history WHERE history.manga_id = manga.manga_id), 0) DESC"
|
ListSortOrder.PROGRESS -> "IFNULL((SELECT percent FROM history WHERE history.manga_id = manga.manga_id), 0) DESC"
|
||||||
|
ListSortOrder.LAST_READ -> "IFNULL((SELECT updated_at FROM history WHERE history.manga_id = manga.manga_id), 0) DESC"
|
||||||
|
|
||||||
else -> throw IllegalArgumentException("Sort order $sortOrder is not supported")
|
else -> throw IllegalArgumentException("Sort order $sortOrder is not supported")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ abstract class HistoryDao {
|
|||||||
|
|
||||||
fun observeAll(order: ListSortOrder): Flow<List<HistoryWithManga>> {
|
fun observeAll(order: ListSortOrder): Flow<List<HistoryWithManga>> {
|
||||||
val orderBy = when (order) {
|
val orderBy = when (order) {
|
||||||
ListSortOrder.UPDATED -> "history.updated_at DESC"
|
ListSortOrder.LAST_READ -> "history.updated_at DESC"
|
||||||
ListSortOrder.NEWEST -> "history.created_at DESC"
|
ListSortOrder.NEWEST -> "history.created_at DESC"
|
||||||
ListSortOrder.PROGRESS -> "history.percent DESC"
|
ListSortOrder.PROGRESS -> "history.percent DESC"
|
||||||
ListSortOrder.ALPHABETIC -> "manga.title"
|
ListSortOrder.ALPHABETIC -> "manga.title"
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ class HistoryListViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun MangaHistory.header(order: ListSortOrder): ListHeader? = when (order) {
|
private fun MangaHistory.header(order: ListSortOrder): ListHeader? = when (order) {
|
||||||
ListSortOrder.UPDATED -> ListHeader(calculateTimeAgo(updatedAt))
|
ListSortOrder.LAST_READ -> ListHeader(calculateTimeAgo(updatedAt))
|
||||||
ListSortOrder.NEWEST -> ListHeader(calculateTimeAgo(createdAt))
|
ListSortOrder.NEWEST -> ListHeader(calculateTimeAgo(createdAt))
|
||||||
ListSortOrder.PROGRESS -> ListHeader(
|
ListSortOrder.PROGRESS -> ListHeader(
|
||||||
when (percent) {
|
when (percent) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ enum class ListSortOrder(
|
|||||||
@StringRes val titleResId: Int,
|
@StringRes val titleResId: Int,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
UPDATED(R.string.updated),
|
|
||||||
NEWEST(R.string.order_added),
|
NEWEST(R.string.order_added),
|
||||||
PROGRESS(R.string.progress),
|
PROGRESS(R.string.progress),
|
||||||
ALPHABETIC(R.string.by_name),
|
ALPHABETIC(R.string.by_name),
|
||||||
@@ -17,14 +16,15 @@ enum class ListSortOrder(
|
|||||||
RATING(R.string.by_rating),
|
RATING(R.string.by_rating),
|
||||||
RELEVANCE(R.string.by_relevance),
|
RELEVANCE(R.string.by_relevance),
|
||||||
NEW_CHAPTERS(R.string.new_chapters),
|
NEW_CHAPTERS(R.string.new_chapters),
|
||||||
|
LAST_READ(R.string.last_read),
|
||||||
;
|
;
|
||||||
|
|
||||||
fun isGroupingSupported() = this == UPDATED || this == NEWEST || this == PROGRESS
|
fun isGroupingSupported() = this == LAST_READ || this == NEWEST || this == PROGRESS
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
val HISTORY: Set<ListSortOrder> = EnumSet.of(UPDATED, NEWEST, PROGRESS, ALPHABETIC, ALPHABETIC_REVERSE, NEW_CHAPTERS)
|
val HISTORY: Set<ListSortOrder> = EnumSet.of(LAST_READ, NEWEST, PROGRESS, ALPHABETIC, ALPHABETIC_REVERSE, NEW_CHAPTERS)
|
||||||
val FAVORITES: Set<ListSortOrder> = EnumSet.of(ALPHABETIC, ALPHABETIC_REVERSE, NEWEST, RATING, NEW_CHAPTERS, PROGRESS)
|
val FAVORITES: Set<ListSortOrder> = EnumSet.of(ALPHABETIC, ALPHABETIC_REVERSE, NEWEST, RATING, NEW_CHAPTERS, PROGRESS, LAST_READ)
|
||||||
val SUGGESTIONS: Set<ListSortOrder> = EnumSet.of(RELEVANCE)
|
val SUGGESTIONS: Set<ListSortOrder> = EnumSet.of(RELEVANCE)
|
||||||
|
|
||||||
operator fun invoke(value: String, fallback: ListSortOrder) = entries.find(value) ?: fallback
|
operator fun invoke(value: String, fallback: ListSortOrder) = entries.find(value) ?: fallback
|
||||||
|
|||||||
@@ -560,4 +560,5 @@
|
|||||||
<string name="mark_as_completed_prompt">Mark selected manga as completely read?\n\nWarning: current reading progress will be lost.</string>
|
<string name="mark_as_completed_prompt">Mark selected manga as completely read?\n\nWarning: current reading progress will be lost.</string>
|
||||||
<string name="category_hidden_done">This category was hidden from the main screen and is accessible through Menu → Manage categories</string>
|
<string name="category_hidden_done">This category was hidden from the main screen and is accessible through Menu → Manage categories</string>
|
||||||
<string name="incognito_mode_hint">Your reading progress will not be saved</string>
|
<string name="incognito_mode_hint">Your reading progress will not be saved</string>
|
||||||
|
<string name="last_read">Last read</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user