fix local playback buffering for chrome

AuthorKonata <konata@posteo.jp>
Date
Commit5ec8fdd78e2c040ab45cf0674904c438e242a34a
Parente92c335
1 file changed, 14 insertions(+), 6 deletions(-)
▾Mwebclient/src/components/PlayerControls.tsx
@@ -36,6 +36,10 @@ export default function PlayerControls(props: PlayerControlsProps) {
}
}
function isLocalPlaying() {
return props.audioElement.src.startsWith("blob:");
}
// Seek to position
function seekTo(e: MouseEvent) {
const playerState = props.playerState;
@@ -46,7 +50,9 @@ export default function PlayerControls(props: PlayerControlsProps) {
const pos = (e.clientX - rect.left) / rect.width;
const duration = playerState.currentTrack.metadata.duration;
props.audioElement.currentTime = Math.min(pos * duration, playerState.buffered - 1);
props.audioElement.currentTime = isLocalPlaying()
? pos * duration
: Math.min(pos * duration, playerState.buffered - 1);
props.setPlayerState("currentTime", pos * duration);
}
@@ -69,12 +75,14 @@ export default function PlayerControls(props: PlayerControlsProps) {
style={{
width: `${
props.playerState.currentTrack
? Math.min(
100,
(props.playerState.buffered /
(props.playerState.currentTrack?.metadata.duration ?? Number.POSITIVE_INFINITY)) *
? isLocalPlaying()
? 100
: Math.min(
100,
)
(props.playerState.buffered /
(props.playerState.currentTrack?.metadata.duration ?? Number.POSITIVE_INFINITY)) *
100,
)
: 0
}%`,
}}