fix: load audio thmb
This commit is contained in:
@@ -68,7 +68,7 @@ export function FurumiPlayer() {
|
||||
Array<{ result_type: string; slug: string; name: string; detail?: string }>
|
||||
>([])
|
||||
const [searchOpen, setSearchOpen] = useState(false)
|
||||
const searchSelectRef = useRef<(type: string, slug: string) => void>(() => {})
|
||||
const searchSelectRef = useRef<(type: string, slug: string) => void>(() => { })
|
||||
|
||||
const queueActionsRef = useRef<{
|
||||
playIndex: (i: number) => void
|
||||
@@ -333,8 +333,18 @@ export function FurumiPlayer() {
|
||||
if (i < 0 || i >= q.items.length) return
|
||||
dispatch(playAtIndex(i))
|
||||
const track = store.getState().queue.items[i]
|
||||
audio.src = `${API_ROOT}/stream/${track.slug}`
|
||||
void audio.play().catch(() => {})
|
||||
// TODO remove after auth refactor
|
||||
preloadStream(track.slug).then(response => {
|
||||
console.log('response', response)
|
||||
audio.src = URL.createObjectURL(response?.data)
|
||||
void audio.play().catch(() => { })
|
||||
// Optionally revoke old object URL if needed to avoid memory leaks
|
||||
// if (oldSrc?.startsWith('blob:')) {
|
||||
// URL.revokeObjectURL(oldSrc)
|
||||
// }
|
||||
})
|
||||
// audio.src = `${API_ROOT}/stream/${track.slug}`
|
||||
// void audio.play().catch(() => {})
|
||||
if (window.history && window.history.replaceState) {
|
||||
const url = new URL(window.location.href)
|
||||
url.searchParams.set('t', track.slug)
|
||||
@@ -550,28 +560,28 @@ export function FurumiPlayer() {
|
||||
const clearQueueBtn = document.getElementById('btnClearQueue')
|
||||
clearQueueBtn?.addEventListener('click', () => clearQueuePlayback())
|
||||
|
||||
;(async () => {
|
||||
const url = new URL(window.location.href)
|
||||
const urlSlug = url.searchParams.get('t')
|
||||
if (urlSlug) {
|
||||
try {
|
||||
const { detail } = await dispatch(fetchTrackDetail(urlSlug)).unwrap()
|
||||
addTrackToQueue(
|
||||
{
|
||||
slug: detail.slug,
|
||||
title: detail.title,
|
||||
artist: detail.artist_name,
|
||||
album_slug: detail.album_slug,
|
||||
duration: detail.duration_secs,
|
||||
},
|
||||
true,
|
||||
)
|
||||
} catch {
|
||||
// fetchTrackDetail rejected — track not found or error
|
||||
; (async () => {
|
||||
const url = new URL(window.location.href)
|
||||
const urlSlug = url.searchParams.get('t')
|
||||
if (urlSlug) {
|
||||
try {
|
||||
const { detail } = await dispatch(fetchTrackDetail(urlSlug)).unwrap()
|
||||
addTrackToQueue(
|
||||
{
|
||||
slug: detail.slug,
|
||||
title: detail.title,
|
||||
artist: detail.artist_name,
|
||||
album_slug: detail.album_slug,
|
||||
duration: detail.duration_secs,
|
||||
},
|
||||
true,
|
||||
)
|
||||
} catch {
|
||||
// fetchTrackDetail rejected — track not found or error
|
||||
}
|
||||
}
|
||||
}
|
||||
void showArtists()
|
||||
})()
|
||||
void showArtists()
|
||||
})()
|
||||
|
||||
return () => {
|
||||
queueActionsRef.current = null
|
||||
|
||||
@@ -44,6 +44,6 @@ export async function getTrackInfo(trackSlug: string): Promise<TrackDetail | nul
|
||||
}
|
||||
|
||||
export async function preloadStream(trackSlug: string) {
|
||||
await furumiApi.get(`/stream/${trackSlug}`, { responseType: 'arraybuffer' }).catch(() => null)
|
||||
return await furumiApi.get(`/stream/${trackSlug}`, { responseType: 'blob' }).catch(() => null)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user