Skip to content

Commit 5269748

Browse files
committed
guild banner updates
1 parent d1d7245 commit 5269748

File tree

5 files changed

+80
-9
lines changed

5 files changed

+80
-9
lines changed

src/webpage/contextmenu.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class Contextmenu<x, y> {
153153
addSeperator(visable?: (obj1: x, obj2: y) => boolean) {
154154
this.buttons.push(new Seperator(visable));
155155
}
156-
private makemenu(x: number, y: number, addinfo: x, other: y) {
156+
makemenu(x: number, y: number, addinfo: x, other: y) {
157157
const div = document.createElement("div");
158158
div.classList.add("contextmenu", "flexttb");
159159

src/webpage/guild.ts

+25-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
invitejson,
1414
rolesjson,
1515
emojipjson,
16+
extendedProperties,
1617
} from "./jsontypes.js";
1718
import {User} from "./user.js";
1819
import {I18n} from "./i18n.js";
@@ -433,6 +434,17 @@ class Guild extends SnowFlake {
433434
this.roleUpdate(role, -1);
434435
}
435436
onEmojiUpdate = (_: emojipjson[]) => {};
437+
update(json: extendedProperties) {
438+
this.large = json.large;
439+
this.member_count = json.member_count;
440+
this.emojis = json.emojis;
441+
this.headers = this.owner.headers;
442+
this.channels = [];
443+
444+
this.roles = [];
445+
this.roleids = new Map();
446+
this.banner = json.banner;
447+
}
436448
constructor(json: guildjson | -1, owner: Localuser, member: memberjson | User | null) {
437449
if (json === -1 || member === null) {
438450
super("@me");
@@ -442,22 +454,28 @@ class Guild extends SnowFlake {
442454
console.log(json.stickers, ":3");
443455
}
444456
super(json.id);
457+
this.owner = owner;
445458
this.large = json.large;
446459
this.member_count = json.member_count;
447460
this.emojis = json.emojis;
448-
this.owner = owner;
449461
this.headers = this.owner.headers;
450462
this.channels = [];
451-
this.properties = json.properties;
463+
if (json.properties) {
464+
this.properties = json.properties;
465+
}
452466
this.roles = [];
453467
this.roleids = new Map();
468+
this.banner = json.properties.banner;
469+
if (json.roles) {
470+
for (const roley of json.roles) {
471+
const roleh = new Role(roley, this);
472+
this.roles.push(roleh);
473+
this.roleids.set(roleh.id, roleh);
474+
}
475+
}
454476

455477
this.message_notifications = 0;
456-
for (const roley of json.roles) {
457-
const roleh = new Role(roley, this);
458-
this.roles.push(roleh);
459-
this.roleids.set(roleh.id, roleh);
460-
}
478+
461479
this.sortRoles();
462480
if (member instanceof User) {
463481
console.warn(member);

src/webpage/jsontypes.ts

+11
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,10 @@ type guildjson = {
241241
guild_hashes: {};
242242
joined_at: string;
243243
};
244+
type extendedProperties = guildjson["properties"] & {
245+
emojis: emojipjson[];
246+
large: boolean;
247+
};
244248
type startTypingjson = {
245249
d: {
246250
channel_id: string;
@@ -579,6 +583,12 @@ type wsjson =
579583
emojis: emojipjson[];
580584
};
581585
s: number;
586+
}
587+
| {
588+
op: 0;
589+
t: "GUILD_UPDATE";
590+
d: extendedProperties;
591+
s: number;
582592
};
583593

584594
type memberChunk = {
@@ -749,4 +759,5 @@ export {
749759
sdpback,
750760
opRTC12,
751761
emojipjson,
762+
extendedProperties,
752763
};

src/webpage/localuser.ts

+35
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,13 @@ class Localuser {
478478
}
479479
break;
480480
}
481+
case "GUILD_UPDATE": {
482+
const guildy = this.guildids.get(temp.d.id);
483+
if (guildy) {
484+
guildy.update(temp.d);
485+
}
486+
break;
487+
}
481488
case "GUILD_CREATE":
482489
(async () => {
483490
const guildy = new Guild(temp.d, this, this.user);
@@ -887,6 +894,34 @@ class Localuser {
887894
}
888895
this.lookingguild = guild;
889896
(document.getElementById("serverName") as HTMLElement).textContent = guild.properties.name;
897+
const banner = document.getElementById("servertd");
898+
console.log(guild.banner, banner);
899+
if (banner) {
900+
if (guild.banner) {
901+
//https://cdn.discordapp.com/banners/677271830838640680/fab8570de5bb51365ba8f36d7d3627ae.webp?size=240
902+
banner.style.setProperty(
903+
"background-image",
904+
`linear-gradient(rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 40%), url(${this.info.cdn}/banners/${guild.id}/${guild.banner})`,
905+
);
906+
banner.classList.add("Banner");
907+
//background-image:
908+
} else {
909+
banner.style.removeProperty("background-image");
910+
banner.classList.remove("Banner");
911+
}
912+
if (guild.id !== "@me") {
913+
banner.style.setProperty("cursor", `pointer`);
914+
banner.onclick = (e) => {
915+
e.preventDefault();
916+
e.stopImmediatePropagation();
917+
const box = banner.getBoundingClientRect();
918+
Guild.contextmenu.makemenu(box.left + 16, box.bottom + 5, guild, undefined);
919+
};
920+
} else {
921+
banner.style.removeProperty("cursor");
922+
banner.onclick = () => {};
923+
}
924+
}
890925
//console.log(this.guildids,id)
891926
const channels = document.getElementById("channels") as HTMLDivElement;
892927
channels.innerHTML = "";

src/webpage/style.css

+8-1
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,7 @@ span.instanceStatus {
725725
background: var(--channels-bg);
726726
user-select: none;
727727
}
728+
728729
.header {
729730
flex: none;
730731
height: 48px;
@@ -734,8 +735,14 @@ span.instanceStatus {
734735
align-items: center;
735736
user-select: none;
736737
}
738+
.Banner {
739+
height: 100px;
740+
align-items: start;
741+
padding-top: 10px;
742+
background-size: cover;
743+
}
737744
#serverName {
738-
font-size: 1.15rem;
745+
font-size: 1rem;
739746
}
740747
#channels {
741748
flex: 1;

0 commit comments

Comments
 (0)