fix: register audio event handlers before setting src to avoid onloadedmetadata race
All checks were successful
Build and Push / build (push) Successful in 1m11s
All checks were successful
Build and Push / build (push) Successful in 1m11s
This commit is contained in:
@@ -74,12 +74,11 @@ export default function Speakers() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
audio.src = blobUrl;
|
|
||||||
audio.load();
|
|
||||||
|
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
audio.onloadedmetadata = () => resolve();
|
audio.onloadedmetadata = () => resolve();
|
||||||
audio.onerror = () => reject(new Error("Audio decode failed"));
|
audio.onerror = () => reject(new Error("Audio decode failed"));
|
||||||
|
audio.src = blobUrl;
|
||||||
|
audio.load();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!cancelled) setAudioLoading(false);
|
if (!cancelled) setAudioLoading(false);
|
||||||
@@ -181,6 +180,7 @@ export default function Speakers() {
|
|||||||
onTimeUpdate={(e) => setCurrentTime(e.currentTarget.currentTime)}
|
onTimeUpdate={(e) => setCurrentTime(e.currentTarget.currentTime)}
|
||||||
onLoadedMetadata={(e) => setDuration(e.currentTarget.duration)}
|
onLoadedMetadata={(e) => setDuration(e.currentTarget.duration)}
|
||||||
controls
|
controls
|
||||||
|
preload="auto"
|
||||||
className="w-full mb-3"
|
className="w-full mb-3"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user