From 25501147ae1b345d19405a7ebd97914f74c97726 Mon Sep 17 00:00:00 2001 From: JustTemmie <47639983+JustTemmie@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:39:16 +0200 Subject: [PATCH 1/6] chore: remove old icon generation --- utils/generateDefaultIcon.ts | 38 --------------------------- utils/isCanvasBlocked.ts | 50 ------------------------------------ 2 files changed, 88 deletions(-) delete mode 100644 utils/generateDefaultIcon.ts delete mode 100644 utils/isCanvasBlocked.ts diff --git a/utils/generateDefaultIcon.ts b/utils/generateDefaultIcon.ts deleted file mode 100644 index 1cc8d43..0000000 --- a/utils/generateDefaultIcon.ts +++ /dev/null @@ -1,38 +0,0 @@ -export default (name: string, seed: string): string => { - const canvas = document.createElement("canvas"); - const ctx = canvas.getContext("2d"); - if (canvas && ctx) { - canvas.width = 256; - canvas.height = 256; - - // get the first char from every word in the guild name - let previewName = ""; - if (name.length > 3) { - let guildName: string[] = name.split(' ') - for (let i = 0; i < 3; i ++) { - if (guildName.length > i) { - previewName += guildName[i].charAt(0) - } else { - break - } - } - } else { - previewName = name - } - - // fill background using seeded colour - ctx.fillStyle = generateIrcColor(seed, 50) - ctx.fillRect(0, 0, 256, 256) - - ctx.fillStyle = 'white' - ctx.textAlign = 'center' - ctx.textBaseline = 'middle' - ctx.font = `bold 96px Arial, Helvetica, sans-serif` - // 136 isn't actually centered, but it *looks* centered - ctx.fillText(previewName, 128, 136) - - return canvas.toDataURL("image/png"); - } - - return "https://tenor.com/view/dame-da-ne-guy-kiryukazuma-kiryu-yakuza-yakuza-0-gif-14355451116903905918" -} \ No newline at end of file diff --git a/utils/isCanvasBlocked.ts b/utils/isCanvasBlocked.ts deleted file mode 100644 index 3bd191e..0000000 --- a/utils/isCanvasBlocked.ts +++ /dev/null @@ -1,50 +0,0 @@ -// -// Canvas Blocker & -// Firefox privacy.resistFingerprinting Detector. -// (c) 2018 // JOHN OZBAY // CRYPT.EE -// MIT License -// -export default () => { - // create a 1px image data - var blocked = false; - var canvas = document.createElement("canvas"); - var ctx = canvas.getContext("2d"); - - // some blockers just return an undefined ctx. So let's check that first. - if (ctx) { - var imageData = ctx.createImageData(1,1); - var originalImageData = imageData.data; - - // set pixels to RGB 128 - originalImageData[0]=128; - originalImageData[1]=128; - originalImageData[2]=128; - originalImageData[3]=255; - - // set this to canvas - ctx.putImageData(imageData,1,1); - - try { - // now get the data back from canvas. - var checkData = ctx.getImageData(1, 1, 1, 1).data; - - // If this is firefox, and privacy.resistFingerprinting is enabled, - // OR a browser extension blocking the canvas, - // This will return RGB all white (255,255,255) instead of the (128,128,128) we put. - - // so let's check the R and G to see if they're 255 or 128 (matching what we've initially set) - if (originalImageData[0] !== checkData[0] && originalImageData[1] !== checkData[1]) { - blocked = true; - console.log("Canvas is blocked. Will display warning."); - } - } catch (error) { - // some extensions will return getImageData null. this is to account for that. - blocked = true; - console.log("Canvas is blocked. Will display warning."); - } - } else { - blocked = true; - console.log("Canvas is blocked. Will display warning."); - } - return blocked; -} \ No newline at end of file -- 2.47.3 From ed38340249f77bc44f5670c05e942973ab907f8c Mon Sep 17 00:00:00 2001 From: JustTemmie <47639983+JustTemmie@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:39:39 +0200 Subject: [PATCH 2/6] feat: implement new guild icons --- components/Avatar.vue | 9 +++----- components/DefaultIcon.vue | 45 ++++++++++++++++++++++++++++++++++++++ layouts/client.vue | 19 ++++++++-------- 3 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 components/DefaultIcon.vue diff --git a/components/Avatar.vue b/components/Avatar.vue index ddfe1dc..eafd81b 100644 --- a/components/Avatar.vue +++ b/components/Avatar.vue @@ -3,8 +3,9 @@ class="display-avatar" :src="displayAvatar" :alt="displayName" /> - @@ -28,10 +29,6 @@ if (user) { if (user.avatar) { displayAvatar = user.avatar - } else if (!isCanvasBlocked()){ - displayAvatar = generateDefaultIcon(displayName, user.uuid) - } else { - displayAvatar = null } } diff --git a/components/DefaultIcon.vue b/components/DefaultIcon.vue new file mode 100644 index 0000000..31eaa6e --- /dev/null +++ b/components/DefaultIcon.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/layouts/client.vue b/layouts/client.vue index 48a7f66..15907c4 100644 --- a/layouts/client.vue +++ b/layouts/client.vue @@ -17,19 +17,15 @@
- + - - + :name="guild.name" :seed="guild.uuid"/>
@@ -52,6 +48,7 @@