From d3ab9fae75788cf9cb328b969308199b42180399 Mon Sep 17 00:00:00 2001 From: Victor Westerlund Date: Sat, 6 Feb 2021 05:58:54 +0100 Subject: [PATCH] Concat of friends and messages array Concatinating friends and messages for bulk processing. Added empty catch() and response.status check on getStadiaAvatar() to ignore all missing avatars. (Default to Stadia avatar) Changing HTTP Response code from 404 to 200 for missing avatars (but a userID was supplied). CORS headers are not set for error pages in NGINX. This oculd be adressed by recompiling NGINX with more_headers. --- endpoint/get.php | 2 +- userscript-client.js | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/endpoint/get.php b/endpoint/get.php index cdb79cc..25a724b 100644 --- a/endpoint/get.php +++ b/endpoint/get.php @@ -9,7 +9,7 @@ $avatar = $db->get_avatar($user_id); if(!$avatar) { - error("404","No avatar was found for the supplied userID"); + error("200","No avatar was found for the supplied userID"); } echo "{\"status\":\"OK\",\"avatar\":\"${avatar}\"}"; \ No newline at end of file diff --git a/userscript-client.js b/userscript-client.js index 0e6e0d4..18d80fa 100644 --- a/userscript-client.js +++ b/userscript-client.js @@ -43,14 +43,21 @@ // Serialized group of selectors based on context selectors(group,id = false) { switch(group) { - case "me": return ".ksZYgc, .rybUIf"; - case "friends": return `.Y1rZWd[data-playerid="${id}"] .Fnd1Pd, .w2Sl7c[data-playerid="${id}"] .drvCDc`; + case "me": return ` + .ksZYgc, + .rybUIf + `; + case "friends": return ` + c-wiz[data-p='%.@.null,"${id}"]'] .drvCDc, + .Y1rZWd[data-player-id="${id}"] .Fnd1Pd, + .Y1rZWd[data-playerid="${id}"] .Fnd1Pd, + .w2Sl7c[data-playerid="${id}"] .drvCDc + `; } } add(selectors,avatar) { this.sheet.insertRule(`${selectors} { background-image: url(${avatar}) !important; }`); - console.log(`${selectors} { background-image: url(${avatar}) !important; }`); } } @@ -75,9 +82,15 @@ // Fetch avatar and append to stylesheet function replaceWithGravatar(group,playerID) { getStadiaAvatar(playerID).then(response => { + if(response.status !== "OK") { + return false; + } + gravatar.pathname = "/avatar/" + response.avatar; // Append Gravatar hash avatars.add(avatars.selectors(group,playerID),gravatar); // Add style override by group - }); + }).catch( + // Ignore missing avatars + ); } // ---- @@ -101,10 +114,11 @@ clearTimeout(timeout); timeout = setTimeout(() => { - const friends = document.querySelector("[jsname='FhFdCc']").children; - const messages = document.querySelector("[jsname='FhFdCc']").children; + let elements = []; + elements = Array.prototype.concat.apply(elements,document.querySelector("[jsaction='JIbuQc:mbLu7b']").children); + elements = Array.prototype.concat.apply(elements,document.querySelector("[jsname='FhFdCc']").children); - updateFamily("friends",messages); + updateFamily("friends",elements); },700); }