@@ -3,7 +3,6 @@ import { isElectron } from "@/utils/env";
33import { getPlaySongData } from "@/utils/format" ;
44import { msToS } from "@/utils/time" ;
55import type { SystemMediaEvent } from "@emi" ;
6- import axios from "axios" ;
76import { throttle } from "lodash-es" ;
87import { usePlayerController } from "./PlayerController" ;
98import {
@@ -113,7 +112,6 @@ class MediaSessionManager {
113112 ? "Track"
114113 : "None" ;
115114 sendMediaPlayMode ( shuffle , repeat ) ;
116-
117115 player . syncMediaPlayMode ( ) ;
118116
119117 // 同步初始播放速率
@@ -147,47 +145,35 @@ class MediaSessionManager {
147145
148146 /**
149147 * 更新元数据
150- * @param coverBuffer 封面数据(可选,避免重复下载)
151148 */
152- public async updateMetadata ( coverBuffer ?: Uint8Array ) {
149+ public async updateMetadata ( ) {
153150 if ( ! ( "mediaSession" in navigator ) && ! isElectron ) return ;
154-
155151 const musicStore = useMusicStore ( ) ;
156152 const settingStore = useSettingStore ( ) ;
157153 const song = getPlaySongData ( ) ;
158-
159154 if ( ! song ) return ;
160-
161155 if ( this . metadataAbortController ) {
162156 this . metadataAbortController . abort ( ) ;
163157 }
164-
165158 this . metadataAbortController = new AbortController ( ) ;
166159 const { signal } = this . metadataAbortController ;
167-
168160 const metadata = this . buildMetadata ( song ) ;
169-
170161 // 原生插件
171162 if ( this . shouldUseNativeMedia ( ) && settingStore . smtcOpen ) {
172163 try {
164+ let coverBuffer : Uint8Array | undefined ;
173165 // 获取封面数据
174166 if (
175167 ! coverBuffer &&
176168 metadata . coverUrl &&
177- ( metadata . coverUrl . startsWith ( "http" ) || metadata . coverUrl . startsWith ( "blob:" ) )
169+ ( metadata . coverUrl . startsWith ( "http" ) ||
170+ metadata . coverUrl . startsWith ( "blob:" ) ||
171+ metadata . coverUrl . startsWith ( "file://" ) )
178172 ) {
179173 try {
180- if ( metadata . coverUrl . startsWith ( "blob:" ) ) {
181- const resp = await fetch ( metadata . coverUrl , { signal } ) ;
182- const buf = await resp . arrayBuffer ( ) ;
183- coverBuffer = new Uint8Array ( buf ) ;
184- } else {
185- const resp = await axios . get ( metadata . coverUrl , {
186- responseType : "arraybuffer" ,
187- signal,
188- } ) ;
189- coverBuffer = new Uint8Array ( resp . data ) ;
190- }
174+ const resp = await fetch ( metadata . coverUrl , { signal } ) ;
175+ const buf = await resp . arrayBuffer ( ) ;
176+ coverBuffer = new Uint8Array ( buf ) ;
191177 } catch {
192178 // 忽略下载失败
193179 }
@@ -203,7 +189,7 @@ class MediaSessionManager {
203189 ncmId : typeof song . id === "number" ? song . id : undefined ,
204190 } ) ;
205191 } catch ( e ) {
206- if ( ! axios . isCancel ( e ) ) {
192+ if ( ! ( e instanceof DOMException && e . name === "AbortError" ) ) {
207193 console . error ( "[Media] 更新元数据失败" , e ) ;
208194 }
209195 } finally {
0 commit comments