Added support for /profile/ pages

Custom avatars now appear on `/profile/` pages. Thanks to u/ChristopherKlay on Reddit for suggesting querySelector wildcards.

Added some comments.
This commit is contained in:
Victor Westerlund 2021-02-08 12:01:09 +01:00
parent e51ee8e382
commit 8894f3c6e0

View file

@ -44,11 +44,16 @@
selectors(group,id = false) { selectors(group,id = false) {
switch(group) { switch(group) {
case "me": return ` case "me": return `
c-wiz[data-p*="${id}"] .XZRzG,
.OGtUWe .dOyvbe,
.ksZYgc, .ksZYgc,
.rybUIf .rybUIf
`; `;
case "friends": return ` case "friends": return `
c-wiz[data-p='%.@.null,"${id}"]'] .drvCDc, div[jsdata*="${id}"] .PwtJse,
c-wiz[data-p*="${id}"] .XZRzG,
c-wiz[data-p*="${id}"] .drvCDc,
c-wiz[data-p*="${id}"] .vLPc0c,
.Y1rZWd[data-player-id="${id}"] .Fnd1Pd, .Y1rZWd[data-player-id="${id}"] .Fnd1Pd,
.Y1rZWd[data-playerid="${id}"] .Fnd1Pd, .Y1rZWd[data-playerid="${id}"] .Fnd1Pd,
.w2Sl7c[data-playerid="${id}"] .drvCDc .w2Sl7c[data-playerid="${id}"] .drvCDc
@ -72,6 +77,7 @@
return id; return id;
} }
// Fetch Gravatar hash from endpoint
async function getStadiaAvatar(playerID) { async function getStadiaAvatar(playerID) {
stadiaAvatar.searchParams.set("userID",playerID); stadiaAvatar.searchParams.set("userID",playerID);
@ -95,7 +101,7 @@
// ---- // ----
replaceWithGravatar("me",getID(document.querySelector("[jsname='HiaYvf']"))); replaceWithGravatar("me",getID(document.querySelector("[jsname='HiaYvf']"))); // Append styles for my avatar
function updateFamily(group,wrapper) { function updateFamily(group,wrapper) {
for(const element of wrapper) { for(const element of wrapper) {
@ -110,13 +116,15 @@
let timeout = null; let timeout = null;
// Fetch friend avatars
const friendsList = (mutation,observer) => { const friendsList = (mutation,observer) => {
clearTimeout(timeout); clearTimeout(timeout);
// Wait until subtree stops mutating (on initial load)
timeout = setTimeout(() => { timeout = setTimeout(() => {
let elements = []; let elements = [];
elements = Array.prototype.concat.apply(elements,document.querySelector("[jsaction='JIbuQc:mbLu7b']").children); elements = Array.prototype.concat.apply(elements,document.querySelector("[jsaction='JIbuQc:mbLu7b']").children); // Friends list
elements = Array.prototype.concat.apply(elements,document.querySelector("[jsname='FhFdCc']").children); elements = Array.prototype.concat.apply(elements,document.querySelector("[jsname='FhFdCc']").children); // Messages list
updateFamily("friends",elements); updateFamily("friends",elements);
},700); },700);