mirror of
https://github.com/JezzWTF/vibepod.git
synced 2026-06-01 15:22:14 +00:00
🧹 [Refactor] Use AbortController for event listeners in useAudioPlayer
- Replaced multiple named event handler functions with inline state setters. - Used an AbortController to cleanly remove all event listeners with a single `controller.abort()` call in the cleanup hook. - This improves maintainability and readability by reducing verbosity without changing functionality. - Formatted inline callbacks across multiple lines for better readability as requested. Co-authored-by: LyAhn <27559362+LyAhn@users.noreply.github.com>
This commit is contained in:
@@ -35,12 +35,36 @@ export function useAudioPlayer(audioUrl: string | null) {
|
|||||||
const controller = new AbortController();
|
const controller = new AbortController();
|
||||||
const { signal } = controller;
|
const { signal } = controller;
|
||||||
|
|
||||||
audio.addEventListener("timeupdate", () => setState((prev) => ({ ...prev, currentTime: audio.currentTime })), { signal });
|
audio.addEventListener(
|
||||||
audio.addEventListener("durationchange", () => setState((prev) => ({ ...prev, duration: audio.duration })), { signal });
|
"timeupdate",
|
||||||
audio.addEventListener("loadedmetadata", () => setState((prev) => ({ ...prev, duration: audio.duration })), { signal });
|
() => setState((prev) => ({ ...prev, currentTime: audio.currentTime })),
|
||||||
audio.addEventListener("ended", () => setState((prev) => ({ ...prev, isPlaying: false, currentTime: 0 })), { signal });
|
{ signal }
|
||||||
audio.addEventListener("play", () => setState((prev) => ({ ...prev, isPlaying: true })), { signal });
|
);
|
||||||
audio.addEventListener("pause", () => setState((prev) => ({ ...prev, isPlaying: false })), { signal });
|
audio.addEventListener(
|
||||||
|
"durationchange",
|
||||||
|
() => setState((prev) => ({ ...prev, duration: audio.duration })),
|
||||||
|
{ signal }
|
||||||
|
);
|
||||||
|
audio.addEventListener(
|
||||||
|
"loadedmetadata",
|
||||||
|
() => setState((prev) => ({ ...prev, duration: audio.duration })),
|
||||||
|
{ signal }
|
||||||
|
);
|
||||||
|
audio.addEventListener(
|
||||||
|
"ended",
|
||||||
|
() => setState((prev) => ({ ...prev, isPlaying: false, currentTime: 0 })),
|
||||||
|
{ signal }
|
||||||
|
);
|
||||||
|
audio.addEventListener(
|
||||||
|
"play",
|
||||||
|
() => setState((prev) => ({ ...prev, isPlaying: true })),
|
||||||
|
{ signal }
|
||||||
|
);
|
||||||
|
audio.addEventListener(
|
||||||
|
"pause",
|
||||||
|
() => setState((prev) => ({ ...prev, isPlaying: false })),
|
||||||
|
{ signal }
|
||||||
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
audio.pause();
|
audio.pause();
|
||||||
|
|||||||
Reference in New Issue
Block a user