fix(album-actions): update playlist and button selectors (#3367)

* fix(album-actions): update playlist and button selectors

* refactor(album-actions): directly access the last element of NodeList

Co-authored-by: Angelos Bouklis <me@arjix.dev>

* refactor(album-actions): directly access the last element of NodeList

Co-authored-by: Angelos Bouklis <me@arjix.dev>

---------

Co-authored-by: Angelos Bouklis <me@arjix.dev>
This commit is contained in:
Franz DC
2025-05-24 23:18:49 +08:00
committed by GitHub
parent 77c9d44823
commit 2dbaecff6e

View File

@ -62,7 +62,7 @@ export default createPlugin<
//Finds the playlist //Finds the playlist
const playlist = const playlist =
document.querySelector('ytmusic-playlist-shelf-renderer') ?? document.querySelector('ytmusic-playlist-shelf-renderer') ??
document.querySelector('ytmusic-shelf-renderer')!; Array.prototype.at.call(document.querySelectorAll('ytmusic-shelf-renderer'), -1)!;
// Adds an observer for every button, so it gets updated when one is clicked // Adds an observer for every button, so it gets updated when one is clicked
this.changeObserver?.disconnect(); this.changeObserver?.disconnect();
this.changeObserver = new MutationObserver(() => { this.changeObserver = new MutationObserver(() => {
@ -86,16 +86,16 @@ export default createPlugin<
if (continuations.children.length == 0 && listsLength > 0) { if (continuations.children.length == 0 && listsLength > 0) {
const counts = [ const counts = [
playlist?.querySelectorAll( playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=true] > button', '#button-shape-dislike > button[aria-pressed=true]',
).length, ).length,
playlist?.querySelectorAll( playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=false] > button', '#button-shape-dislike > button[aria-pressed=false]',
).length, ).length,
playlist?.querySelectorAll( playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=false] > button', '#button-shape-like > button[aria-pressed=false]',
).length, ).length,
playlist?.querySelectorAll( playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=true] > button', '#button-shape-like > button[aria-pressed=true]',
).length, ).length,
]; ];
let i = 0; let i = 0;
@ -159,26 +159,26 @@ export default createPlugin<
let playlistButtons: NodeListOf<HTMLElement> | undefined; let playlistButtons: NodeListOf<HTMLElement> | undefined;
const playlist = const playlist =
document.querySelector('ytmusic-playlist-shelf-renderer') ?? document.querySelector('ytmusic-playlist-shelf-renderer') ??
document.querySelector('ytmusic-shelf-renderer'); Array.prototype.at.call(document.querySelectorAll('ytmusic-shelf-renderer'), -1)!;
switch (id) { switch (id) {
case 'allundislike': case 'allundislike':
playlistButtons = playlist?.querySelectorAll( playlistButtons = playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=true] > button', '#button-shape-dislike > button[aria-pressed=true]',
); );
break; break;
case 'alldislike': case 'alldislike':
playlistButtons = playlist?.querySelectorAll( playlistButtons = playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=false] > button', '#button-shape-dislike > button[aria-pressed=false]',
); );
break; break;
case 'alllike': case 'alllike':
playlistButtons = playlist?.querySelectorAll( playlistButtons = playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=false] > button', '#button-shape-like > button[aria-pressed=false]',
); );
break; break;
case 'allunlike': case 'allunlike':
playlistButtons = playlist?.querySelectorAll( playlistButtons = playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=true] > button', '#button-shape-like > button[aria-pressed=true]',
); );
break; break;
default: default: