feat: async video event dispatch

This commit is contained in:
JellyBrick
2023-12-02 04:28:38 +09:00
parent 97ef6ff997
commit 4dcac23688

View File

@ -114,14 +114,16 @@ export default (api: YoutubePlayer) => {
pause: (e: Event) => playPausedHandler(e, 'pause'),
};
const videoEventDispatcher = async (name: string, videoData: VideoDataChangeValue) => document.dispatchEvent(
new CustomEvent<VideoDataChanged>('videodatachange', {
detail: { name, videoData },
}),
);
const waitingEvent = new Set<string>();
// Name = "dataloaded" and abit later "dataupdated"
api.addEventListener('videodatachange', (name: string, videoData) => {
document.dispatchEvent(
new CustomEvent<VideoDataChanged>('videodatachange', {
detail: { name, videoData },
}),
);
videoEventDispatcher(name, videoData);
if (name === 'dataupdated' && waitingEvent.has(videoData.videoId)) {
waitingEvent.delete(videoData.videoId);