mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-23 13:29:02 +08:00
@@ -10,6 +10,7 @@ export const useSeekTime = (
|
||||
state: AudioMediaPlaybackState;
|
||||
seekOffset: number;
|
||||
updateTime: number;
|
||||
playbackRate: number;
|
||||
}
|
||||
| undefined
|
||||
| null,
|
||||
@@ -24,7 +25,8 @@ export const useSeekTime = (
|
||||
if (playbackState) {
|
||||
const timeElapsed =
|
||||
playbackState.state === 'playing'
|
||||
? (Date.now() - playbackState.updateTime) / 1000
|
||||
? ((Date.now() - playbackState.updateTime) / 1000) *
|
||||
(playbackState.playbackRate ?? 1.0)
|
||||
: 0;
|
||||
// if timeElapsed + playbackState.seekOffset is close to duration,
|
||||
// set seekTime to duration
|
||||
|
||||
@@ -99,6 +99,13 @@ export const SidebarAudioPlayer = () => {
|
||||
[audioMediaManagerService]
|
||||
);
|
||||
|
||||
const handlePlaybackRateChange = useCallback(
|
||||
(rate: number) => {
|
||||
audioMediaManagerService.setPlaybackRate(rate);
|
||||
},
|
||||
[audioMediaManagerService]
|
||||
);
|
||||
|
||||
const handlePlayerClick = useCallback(
|
||||
(e: React.MouseEvent<HTMLDivElement>) => {
|
||||
e.stopPropagation();
|
||||
@@ -130,6 +137,8 @@ export const SidebarAudioPlayer = () => {
|
||||
onPause={handlePause}
|
||||
onStop={handleStop}
|
||||
onSeek={handleSeek}
|
||||
playbackRate={playbackState.playbackRate || 1.0}
|
||||
onPlaybackRateChange={handlePlaybackRateChange}
|
||||
waveform={playbackStats.waveform}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user