Files
youtube-music/src/plugins/skip-disliked-songs/index.ts
2024-10-13 22:45:11 +09:00

43 lines
1.1 KiB
TypeScript

import { t } from '@/i18n';
import { createPlugin } from '@/utils';
import { waitForElement } from '@/utils/wait-for-element';
export default createPlugin<
unknown,
unknown,
{
observer?: MutationObserver;
start(): void;
stop(): void;
}
>({
name: () => t('plugins.skip-disliked-songs.name'),
description: () => t('plugins.skip-disliked-songs.description'),
restartNeeded: false,
renderer: {
start() {
waitForElement<HTMLElement>('#dislike-button-renderer').then(
(dislikeBtn) => {
this.observer = new MutationObserver(() => {
if (dislikeBtn?.getAttribute('like-status') == 'DISLIKE') {
document
.querySelector<HTMLButtonElement>(
'tp-yt-paper-icon-button.next-button',
)
?.click();
}
});
this.observer.observe(dislikeBtn, {
attributes: true,
childList: false,
subtree: false,
});
},
);
},
stop() {
this.observer?.disconnect();
},
},
});