优化排序

This commit is contained in:
truewhile
2026-09-09 22:24:45 +08:00
parent 18e6cb40fd
commit 8f2551a1b6
5 changed files with 50 additions and 61 deletions
+1 -28
View File
@@ -5,17 +5,8 @@ import { imageURL } from '../api/client'
import { ExternalPlayerButton } from '../components/ExternalPlayerButton'
import type { Media } from '../types'
import {
BONUS_SEASON,
EXTRA_SEASON,
isTheatricalFeature,
NCED_SEASON,
NCOP_SEASON,
OAD_SEASON,
OMAKE_SEASON,
ONA_SEASON,
OVA_SEASON,
OVD_SEASON,
PICTURE_DRAMA_SEASON,
seasonLabel,
seriesTitleFromPath,
THEATRICAL_SEASON,
} from '../utils/groupSeries'
@@ -148,24 +139,6 @@ export function LibrarySeriesEpisodes({
)
}
function seasonLabel(season: number): string {
switch (season) {
case 0: return '特别篇'
case THEATRICAL_SEASON: return '剧场版'
case OVA_SEASON: return 'OVA'
case OAD_SEASON: return 'OAD'
case OVD_SEASON: return 'OVD'
case ONA_SEASON: return 'ONA'
case EXTRA_SEASON: return 'Extra'
case BONUS_SEASON: return 'Bonus'
case OMAKE_SEASON: return 'Omake'
case PICTURE_DRAMA_SEASON: return 'Picture Drama'
case NCOP_SEASON: return 'NCOP'
case NCED_SEASON: return 'NCED'
default: return `第 ${season} 季`
}
}
function episodeDisplayTitle(ep: Media, siblings: Media[]): string {
let mainTitle = ''
const epTitle = ep.episode_title?.trim()
+1 -29
View File
@@ -2,20 +2,10 @@ import { useEffect, useMemo } from 'react'
import type { Media } from '../types'
import {
BONUS_SEASON,
EXTRA_SEASON,
getSeriesKey,
isTheatricalFeature,
NCED_SEASON,
NCOP_SEASON,
OAD_SEASON,
OMAKE_SEASON,
ONA_SEASON,
OVA_SEASON,
OVD_SEASON,
PICTURE_DRAMA_SEASON,
seasonSortOrder,
specialSectionForMedia,
THEATRICAL_SEASON,
type SeriesCard,
} from '../utils/groupSeries'
@@ -146,21 +136,3 @@ export function useLibrarySeriesSelection({
clearSelectedSeries,
}
}
function seasonSortOrder(season: number): number {
switch (season) {
case 0: return 0
case OVA_SEASON: return 1
case OAD_SEASON: return 2
case OVD_SEASON: return 3
case ONA_SEASON: return 4
case EXTRA_SEASON: return 5
case BONUS_SEASON: return 6
case OMAKE_SEASON: return 7
case PICTURE_DRAMA_SEASON: return 8
case NCOP_SEASON: return 9
case NCED_SEASON: return 10
case THEATRICAL_SEASON: return 11
default: return 100 + season
}
}
+2 -1
View File
@@ -8,6 +8,7 @@ import { playbackAPI } from '../api/playback'
import { confirmActionResult } from '../components/confirmAction'
import { useEpisodeArtworkPreference } from '../hooks/useEpisodeArtworkPreference'
import type { Media } from '../types'
import { seasonSortOrder } from '../utils/groupSeries'
import { mediaLibraryBackTarget } from './MediaDetailPageModel'
interface MediaDetailPageStateParams {
@@ -77,7 +78,7 @@ export function useMediaDetailPageState({ id, navigate }: MediaDetailPageStatePa
list.sort((a, b) => (a.episode_num || 0) - (b.episode_num || 0))
}
return Array.from(seasons.entries())
.sort(([a], [b]) => a - b)
.sort(([a], [b]) => seasonSortOrder(a) - seasonSortOrder(b))
.map(([season, list]) => ({ season, episodes: list }))
}, [episodes])