This commit is contained in:
truewhile
2026-08-30 22:32:39 +08:00
parent 85918d1196
commit 89d7a6cbb2
3 changed files with 4 additions and 5 deletions
+1
View File
@@ -50,6 +50,7 @@ export function MediaDetailPoster({ media }: MediaDetailArtworkProps) {
<Link
to={`/play/${media.id}`}
state={{ from: `/media/${media.id}` }}
className="absolute inset-0 bg-[#111827]/40 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center"
>
<div className="flex h-14 w-14 items-center justify-center rounded-full bg-brand-500 text-white shadow-xl transform scale-90 group-hover:scale-100 transition-transform">
+2 -1
View File
@@ -90,13 +90,14 @@ export function MediaDetailPlaybackActions({
}: MediaDetailPlaybackActionsProps) {
return (
<div className="flex flex-wrap gap-3">
<Link to={`/play/${media.id}`} className="btn-primary px-6 py-3.5 shadow-sm">
<Link to={`/play/${media.id}`} state={{ from: `/media/${media.id}` }} className="btn-primary px-6 py-3.5 shadow-sm">
<Play size={16} fill="currentColor" />
<span>立即播放</span>
</Link>
<Link
to={`/play/${media.id}?mode=hls`}
state={{ from: `/media/${media.id}` }}
className="btn-outline border-brand-500/30 hover:border-brand-500 text-[#c9954a] hover:bg-brand-50 px-5"
>
<RefreshCw size={14} className="animate-spin-slow" />
+1 -4
View File
@@ -10,7 +10,7 @@ import { playbackAPI } from '../api/playback'
import { subtitlesAPI, type SubtitleTrack } from '../api/subtitles'
import { systemAPI } from '../api/system'
import type { Media } from '../types'
import { getSeriesKey, isEpisodeLike, seriesTitleFromPath } from '../utils/groupSeries'
import { getSeriesKey, seriesTitleFromPath } from '../utils/groupSeries'
import { pickPlayerMode, needsTranscodeForBrowser, type PlayerMode } from './playerPageModel'
import { PlayerTopBar } from './PlayerTopBar'
import { PlayerVideoStage } from './PlayerVideoStage'
@@ -98,9 +98,6 @@ export function PlayerPage() {
const backTarget = useCallback(() => {
const state = location.state as { from?: string } | null
if (state?.from) return state.from
if (media && isEpisodeLike(media) && media.library_id) {
return `/library/${encodeURIComponent(media.display_library_id || media.library_id)}?series=${encodeURIComponent(getSeriesKey(media))}`
}
const target = media?.id || id
return target ? `/media/${target}` : '/'
}, [id, location.state, media])