This commit is contained in:
JellyBrick
2024-01-16 20:34:00 +09:00
parent 7c404ba2ea
commit 26de7f940e
3 changed files with 65 additions and 50 deletions

View File

@ -10,10 +10,7 @@ import type { VideoDataChanged } from '@/types/video-data-changed';
let songInfo: SongInfo = {} as SongInfo;
export const getSongInfo = () => songInfo;
const $ = <E extends Element = Element>(s: string): E | null =>
document.querySelector<E>(s);
window.ipcRenderer.on('update-song-info', (_, extractedSongInfo: SongInfo) => {
window.ipcRenderer.on('ytmd:update-song-info', (_, extractedSongInfo: SongInfo) => {
songInfo = extractedSongInfo;
});
@ -21,7 +18,7 @@ window.ipcRenderer.on('update-song-info', (_, extractedSongInfo: SongInfo) => {
const srcChangedEvent = new CustomEvent('ytmd:src-changed');
export const setupSeekedListener = singleton(() => {
$('video')?.addEventListener('seeked', (v) => {
document.querySelector('video')?.addEventListener('seeked', (v) => {
if (v.target instanceof HTMLVideoElement) {
window.ipcRenderer.send('ytmd:seeked', v.target.currentTime);
}
@ -36,7 +33,7 @@ export const setupTimeChangedListener = singleton(() => {
songInfo.elapsedSeconds = Number(target.value);
}
});
const progressBar = $('#progress-bar');
const progressBar = document.querySelector('#progress-bar');
if (progressBar) {
progressObserver.observe(progressBar, { attributeFilter: ['value'] });
}
@ -56,7 +53,7 @@ export const setupRepeatChangedListener = singleton(() => {
).__dataHost.getState().queue.repeatMode,
);
});
repeatObserver.observe($('#right-controls .repeat')!, {
repeatObserver.observe(document.querySelector('#right-controls .repeat')!, {
attributeFilter: ['title'],
});
@ -64,7 +61,7 @@ export const setupRepeatChangedListener = singleton(() => {
// provided by YouTube Music
window.ipcRenderer.send(
'ytmd:repeat-changed',
$<
document.querySelector<
HTMLElement & {
getState: () => GetState;
}
@ -73,7 +70,7 @@ export const setupRepeatChangedListener = singleton(() => {
});
export const setupVolumeChangedListener = singleton((api: YoutubePlayer) => {
$('video')?.addEventListener('volumechange', () => {
document.querySelector('video')?.addEventListener('volumechange', () => {
window.ipcRenderer.send('ytmd:volume-changed', api.getVolume());
});
// Emit the initial value as well; as it's persistent between launches.
@ -134,7 +131,7 @@ export default (api: YoutubePlayer) => {
waitingEvent.delete(videoData.videoId);
sendSongInfo(videoData);
} else if (name === 'dataloaded') {
const video = $<HTMLVideoElement>('video');
const video = document.querySelector<HTMLVideoElement>('video');
video?.dispatchEvent(srcChangedEvent);
for (const status of ['playing', 'pause'] as const) {
@ -146,9 +143,12 @@ export default (api: YoutubePlayer) => {
}
});
const video = $('video')!;
for (const status of ['playing', 'pause'] as const) {
video.addEventListener(status, playPausedHandlers[status]);
const video = document.querySelector('video');
if (video) {
for (const status of ['playing', 'pause'] as const) {
video.addEventListener(status, playPausedHandlers[status]);
}
}
function sendSongInfo(videoData: VideoDataChangeValue) {