Added library sort by mean Tracker score (#10005)

This commit is contained in:
Caleb Morris
2023-11-04 12:31:59 -07:00
committed by GitHub
parent aca36f9625
commit 5d91b77c93
7 changed files with 49 additions and 15 deletions

View File

@@ -30,6 +30,7 @@ data class LibrarySort(
data object LatestChapter : Type(0b00010100)
data object ChapterFetchDate : Type(0b00011000)
data object DateAdded : Type(0b00011100)
data object TrackerMean : Type(0b000100000)
companion object {
fun valueOf(flag: Long): Type {
@@ -75,6 +76,7 @@ data class LibrarySort(
Type.LatestChapter,
Type.ChapterFetchDate,
Type.DateAdded,
Type.TrackerMean,
)
}
val directions by lazy { setOf(Direction.Ascending, Direction.Descending) }
@@ -101,6 +103,7 @@ data class LibrarySort(
"LATEST_CHAPTER" -> Type.LatestChapter
"CHAPTER_FETCH_DATE" -> Type.ChapterFetchDate
"DATE_ADDED" -> Type.DateAdded
"TRACKER_MEAN" -> Type.TrackerMean
else -> Type.Alphabetical
}
val ascending = if (values[1] == "ASCENDING") Direction.Ascending else Direction.Descending
@@ -121,6 +124,7 @@ data class LibrarySort(
Type.LatestChapter -> "LATEST_CHAPTER"
Type.ChapterFetchDate -> "CHAPTER_FETCH_DATE"
Type.DateAdded -> "DATE_ADDED"
Type.TrackerMean -> "TRACKER_MEAN"
}
val direction = if (direction == Direction.Ascending) "ASCENDING" else "DESCENDING"
return "$type,$direction"

View File

@@ -2,19 +2,14 @@ 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(
private val trackRepository: TrackRepository,
) {
fun subscribe(): Flow<Map<Long, List<Long>>> {
return trackRepository.getTracksAsFlow().map { tracks ->
tracks
.groupBy { it.mangaId }
.mapValues { entry ->
entry.value.map { it.syncId }
}
}
fun subscribe(): Flow<Map<Long, List<Track>>> {
return trackRepository.getTracksAsFlow().map { tracks -> tracks.groupBy { it.mangaId } }
}
}

View File

@@ -12,7 +12,7 @@ class LibraryFlagsTest {
@Test
fun `Check the amount of flags`() {
LibraryDisplayMode.values.size shouldBe 4
LibrarySort.types.size shouldBe 8
LibrarySort.types.size shouldBe 9
LibrarySort.directions.size shouldBe 2
}