Added library sort by mean Tracker score (#10005)

(cherry picked from commit 5d91b77c9340604436c63073c83ad8b37794ddf0)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
#	domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt
#	domain/src/main/java/tachiyomi/domain/track/interactor/GetTracksPerManga.kt
This commit is contained in:
Caleb Morris
2023-11-04 12:31:59 -07:00
committed by Jobobby04
parent 43c5585f7e
commit e14cc134a0
7 changed files with 59 additions and 16 deletions
@@ -30,9 +30,10 @@ data class LibrarySort(
data object LatestChapter : Type(0b00010100)
data object ChapterFetchDate : Type(0b00011000)
data object DateAdded : Type(0b00011100)
data object TrackerMean : Type(0b000100000)
// SY -->
object TagList : Type(0b00100100)
data object TagList : Type(0b00100100)
// SY <--
companion object {
@@ -79,6 +80,7 @@ data class LibrarySort(
Type.LatestChapter,
Type.ChapterFetchDate,
Type.DateAdded,
Type.TrackerMean,
/* SY -->*/ Type.TagList, /* SY <--*/
)
}
@@ -106,6 +108,7 @@ data class LibrarySort(
"LATEST_CHAPTER" -> Type.LatestChapter
"CHAPTER_FETCH_DATE" -> Type.ChapterFetchDate
"DATE_ADDED" -> Type.DateAdded
"TRACKER_MEAN" -> Type.TrackerMean
// SY -->
"TAG_LIST" -> Type.TagList
// SY <--
@@ -129,7 +132,10 @@ data class LibrarySort(
Type.LatestChapter -> "LATEST_CHAPTER"
Type.ChapterFetchDate -> "CHAPTER_FETCH_DATE"
Type.DateAdded -> "DATE_ADDED"
Type.TrackerMean -> "TRACKER_MEAN"
// SY -->
Type.TagList -> "TAG_LIST"
// SY <--
}
val direction = if (direction == Direction.Ascending) "ASCENDING" else "DESCENDING"
return "$type,$direction"
@@ -2,6 +2,7 @@ package tachiyomi.domain.track.interactor
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
class GetTracksPerManga(
@@ -9,17 +10,14 @@ class GetTracksPerManga(
private val isTrackUnfollowed: IsTrackUnfollowed,
) {
fun subscribe(): Flow<Map<Long, List<Long>>> {
fun subscribe(): Flow<Map<Long, List<Track>>> {
return trackRepository.getTracksAsFlow().map { tracks ->
tracks
.groupBy { it.mangaId }
tracks.groupBy { it.mangaId }
// SY -->
.mapValues { entry ->
entry.value
// SY -->
.filterNot { isTrackUnfollowed.await(it) }
// SY <--
.map { it.syncId }
entry.value.filterNot { isTrackUnfollowed.await(it) }
}
// SY <--
}
}
}