Skip to content

Commit a5ebbf4

Browse files
committed
Add discord invite data to sessions storage
- Fixes invites not persisting upon reload
1 parent e53337d commit a5ebbf4

File tree

2 files changed

+78
-27
lines changed

2 files changed

+78
-27
lines changed

layouts/_shortcodes/load-discordinvite.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
</div>
55
<strong>By clicking this button, you will connect to the discord servers to download the images for the invites. This might be giving you cookies!</strong>
66
</div>
7-
<script src="/js/load-discordinvites.js"></script>
7+
<script src="/js/load-discordinvites.js" async defer></script>

static/js/load-discordinvites.js

Lines changed: 77 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,74 @@
1+
const localStorage = window.sessionStorage;
2+
const hasClickedDiscordLoad = localStorage.getItem("hasClickedDiscordLoad");
13

2-
document.getElementById("load-invite-button").addEventListener("click", function (e){
4+
if (hasClickedDiscordLoad) {
5+
document.getElementById("load-invite-button").parentElement.style = "display: none";
36
loadAllInvites();
4-
document.getElementById("load-invite-button").parentElement.style="display: none";
7+
}
8+
9+
document.getElementById("load-invite-button").addEventListener("click", function (e) {
10+
loadAllInvites();
11+
document.getElementById("load-invite-button").parentElement.style = "display: none";
512
})
613

7-
function loadAllInvites(){
14+
function loadAllInvites() {
815
const invites = document.getElementsByClassName("invite");
9-
for(const element of invites){
16+
for (const element of invites) {
1017
const url = element.getAttribute("invite-url");
1118
loadInvite(url, element);
1219
}
20+
localStorage.setItem("hasClickedDiscordLoad", "true");
1321
}
1422

1523
/**
1624
*
1725
* @param {string} inviteUrl
1826
* @param {HTMLElement} inviteElement
1927
*/
20-
function loadInvite(inviteUrl, inviteElement){
21-
const url = 'https://discord.com/api/v10/invites/'+inviteUrl+'?with_counts=true';
28+
function loadInvite(inviteUrl, inviteElement) {
29+
30+
if (hasClickedDiscordLoad) {
31+
const id = localStorage.getItem(`${inviteUrl}_id`);
32+
const name = localStorage.getItem(`${inviteUrl}_name`);
33+
const gicon = localStorage.getItem(`${inviteUrl}_gicon`)
34+
const gsplash = localStorage.getItem(`${inviteUrl}_gsplash`)
35+
const onlinecount = localStorage.getItem(`${inviteUrl}_onlinecount`)
36+
const membercount = localStorage.getItem(`${inviteUrl}_membercount`)
37+
38+
//Create Element
39+
const icon = inviteElement.getElementsByClassName("server-icon")[0];
40+
const splash = inviteElement.getElementsByClassName("splash")[0];
41+
const discordTitle = inviteElement.getElementsByClassName("discord-title")[0];
42+
const discordOnline = inviteElement.getElementsByClassName("discord-online")[0];
43+
const discordMembers = inviteElement.getElementsByClassName("discord-member")[0];
44+
45+
discordTitle.innerHTML = name;
46+
discordOnline.innerHTML = onlinecount + " Online";
47+
discordMembers.innerHTML = membercount + " Members"
48+
49+
50+
if (gsplash != "null") {
51+
splash.src = "https://cdn.discordapp.com/splashes/" + id + "/" + gsplash + ".png?size=480"
52+
splash.style = "display: block";
53+
}
54+
55+
let fileExtension = ".png";
56+
if (gicon.includes("a_")) {
57+
fileExtension = ".gif";
58+
}
59+
60+
icon.src = "https://cdn.discordapp.com/icons/" + id + "/" + gicon + fileExtension + "?size=128";
61+
62+
return
63+
}
64+
65+
const url = 'https://discord.com/api/v10/invites/' + inviteUrl + '?with_counts=true';
2266
fetch(url)
2367
.then(response => response.json())
2468
.then(json => {
25-
if(json.code==10006){
26-
const discordTitle=inviteElement.getElementsByClassName("discord-title")[0];
27-
discordTitle.innerHTML=json.message;
69+
if (json.code == 10006) {
70+
const discordTitle = inviteElement.getElementsByClassName("discord-title")[0];
71+
discordTitle.innerHTML = json.message;
2872
return;
2973
}
3074

@@ -39,27 +83,34 @@ function loadInvite(inviteUrl, inviteElement){
3983
const name = json.guild.name;
4084
const onlinecount = json.approximate_presence_count.toLocaleString();
4185
const membercount = json.approximate_member_count.toLocaleString();
42-
43-
let fileExtension=".png";
44-
if(gicon.includes("a_")){
45-
fileExtension=".gif";
86+
87+
let fileExtension = ".png";
88+
if (gicon.includes("a_")) {
89+
fileExtension = ".gif";
4690
}
4791

4892
icon.src = "https://cdn.discordapp.com/icons/" + id + "/" + gicon + fileExtension + "?size=128";
4993

50-
51-
const discordTitle=inviteElement.getElementsByClassName("discord-title")[0];
52-
const discordOnline=inviteElement.getElementsByClassName("discord-online")[0];
53-
const discordMembers=inviteElement.getElementsByClassName("discord-member")[0];
54-
55-
discordTitle.innerHTML=name;
56-
discordOnline.innerHTML=onlinecount+" Online";
57-
discordMembers.innerHTML=membercount+" Members"
58-
59-
60-
if(gsplash!=null){
61-
splash.src = "https://cdn.discordapp.com/splashes/"+ id +"/"+gsplash+".png?size=480"
94+
95+
const discordTitle = inviteElement.getElementsByClassName("discord-title")[0];
96+
const discordOnline = inviteElement.getElementsByClassName("discord-online")[0];
97+
const discordMembers = inviteElement.getElementsByClassName("discord-member")[0];
98+
99+
discordTitle.innerHTML = name;
100+
discordOnline.innerHTML = onlinecount + " Online";
101+
discordMembers.innerHTML = membercount + " Members"
102+
103+
104+
if (gsplash != null) {
105+
splash.src = "https://cdn.discordapp.com/splashes/" + id + "/" + gsplash + ".png?size=480"
62106
splash.style = "display: block";
63107
}
108+
109+
localStorage.setItem(`${inviteUrl}_id`, id);
110+
localStorage.setItem(`${inviteUrl}_name`, name);
111+
localStorage.setItem(`${inviteUrl}_gicon`, gicon)
112+
localStorage.setItem(`${inviteUrl}_gsplash`, gsplash)
113+
localStorage.setItem(`${inviteUrl}_onlinecount`, onlinecount)
114+
localStorage.setItem(`${inviteUrl}_membercount`, membercount)
64115
});
65-
}
116+
}

0 commit comments

Comments
 (0)