mirror of
https://github.com/hectorqin/reader.git
synced 2026-11-12 05:50:54 +08:00
fix(media): use global loading notice and suppress video referrer
This commit is contained in:
1 parent
b095b537ea
commit
e89c82b60a
3 files changed
+5
-4
No files matched your search
@@ -90,7 +90,7 @@ export class MediaPlayer extends EventTarget {
|
||||
this.corsRetry=true;this.clearStartupTimer();
|
||||
if(this.ready&&Number.isFinite(this.media.currentTime))this.session.position=this.media.currentTime;
|
||||
this.ready=false;this.error='';this.loadingStatus='正在尝试兼容跨域的直连方式…';
|
||||
this.media.crossOrigin='anonymous';this.media.src=this.api.streamUrl(this.session);
|
||||
this.media.crossOrigin='anonymous';(this.media as HTMLMediaElement&{referrerPolicy?:string}).referrerPolicy='no-referrer';this.media.src=this.api.streamUrl(this.session);
|
||||
const generation=this.generation;this.beginWebPlayback(generation);this.changed();
|
||||
this.startupTimer=setTimeout(()=>{if(generation===this.generation&&!this.ready)this.retryWithProxy();},20000);
|
||||
return true;
|
||||
@@ -364,7 +364,7 @@ export class MediaPlayer extends EventTarget {
|
||||
this.media=selected.video?this.video:this.audio;
|
||||
// Anonymous CORS mode makes the browser attach Origin to the media
|
||||
// request and to redirected HLS segment requests such as media-0.ts.
|
||||
this.media.crossOrigin='anonymous';
|
||||
this.media.crossOrigin='anonymous';(this.media as HTMLMediaElement&{referrerPolicy?:string}).referrerPolicy='no-referrer';
|
||||
const rate=this.playbackRate;
|
||||
this.media.defaultPlaybackRate=rate;this.media.playbackRate=rate;
|
||||
if(this.nativeActive)this.native?.command('stop');
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
.media-episode-rail header {position:sticky;top:0;z-index:1;padding-bottom:12px;background:var(--media-paper)}
|
||||
.media-episode-rail .media-video-episodes button {display:grid;grid-template-columns:32px minmax(0,1fr) 18px;gap:10px;align-items:center;padding:10px 8px;border:0;border-radius:8px;color:var(--text);background:transparent}
|
||||
.media-episode-rail .media-video-episodes button:hover:not(:disabled) {background:var(--media-selection)}
|
||||
.media-episode-rail .media-video-episodes button[aria-current=true] {background:#34452a;color:var(--media-accent);font-weight:600}
|
||||
.media-episode-rail .media-video-episodes button[aria-current=true] {background:var(--media-selection);color:var(--media-accent);font-weight:600}
|
||||
.media-episode-rail .media-video-episodes button>span:first-child {font-variant-numeric:tabular-nums;color:var(--muted);text-align:center}
|
||||
.media-episode-rail .media-video-episodes button[aria-current=true]>span:first-child {color:var(--media-accent)}
|
||||
.media-episode-rail .media-video-episodes button>span:nth-child(2) {overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
||||
|
||||
@@ -7,6 +7,7 @@ import type {Detail,MediaApi} from './api.ts';
|
||||
import {MediaLoading} from './loading.tsx';
|
||||
import {MediaScreenError} from './screen-error.tsx';
|
||||
import {PlaybackProblem} from './playback-problem.tsx';
|
||||
import {FloatingNotice} from '../ui/floating-notice.tsx';
|
||||
|
||||
type Tool='episodes'|'subtitles'|'tracks'|'volume'|'more'|'versions';
|
||||
const titles:Record<Tool,string>={episodes:'选集',subtitles:'字幕',tracks:'音轨',volume:'音量',more:'更多播放选项',versions:'播放版本'};
|
||||
@@ -46,7 +47,7 @@ export function VideoControls({player,api,onBack}:{player:MediaPlayer;api:MediaA
|
||||
<div className="media-video-caption"><div><strong>{item?.title||player.title}</strong>{edition&&<small>{edition.label}</small>}</div></div>
|
||||
<div className="media-video-toolbar media-video-tools">{entries.length>1&&<button onClick={()=>open('episodes')}><Layers size={20} aria-hidden="true"/>选集</button>}<button onClick={()=>open('subtitles')}><Subtitles size={20} aria-hidden="true"/>字幕</button><button onClick={()=>open('tracks')}><AudioLines size={20} aria-hidden="true"/>音轨</button><button onClick={()=>open('versions')}><Layers size={20} aria-hidden="true"/>版本</button><button aria-label="更多播放选项" onClick={()=>open('more')}><Ellipsis size={20} aria-hidden="true"/>更多</button></div>
|
||||
{player.error&&<PlaybackProblem player={player} {...(item?.editions.length?{onVersions:()=>open('versions')}:{})} {...(onBack?{onBack}:{})}/>}
|
||||
{!player.error&&player.loadingStatus&&<p role="status">{player.loadingStatus}</p>}
|
||||
{!player.error&&player.loadingStatus&&<FloatingNotice message={player.loadingStatus} busy />}
|
||||
{notice&&<p className="media-error" role="alert">{notice}</p>}
|
||||
{item&&(item.overrides.plot??item.overrides.description??item.metadata.plot??item.metadata.description)&&<details className="media-video-description"><summary>剧情简介</summary><p>{String(item.overrides.plot??item.overrides.description??item.metadata.plot??item.metadata.description)}</p></details>}
|
||||
{item?.kind==='episode'&&item.parentId&&<VideoEpisodeRail key={item.parentId} api={api} item={item} player={player}/>}
|
||||
|
||||
Reference in new issue
Block a user