Skip to content

Commit 14fa4bc

Browse files
committed
roles correction
1 parent efb03d4 commit 14fa4bc

2 files changed

Lines changed: 20 additions & 20 deletions

File tree

src/webpage/member.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ class Member extends SnowFlake {
1111
static already = {};
1212
owner: Guild;
1313
user: User;
14-
roles: Role[] = [];
14+
roles = new Set<Role>();
1515
nick!: string;
16-
avatar: void | string = undefined;
17-
banner: void | string = undefined;
16+
avatar?: string;
17+
banner?: string;
1818
communication_disabled_until?: Date;
1919
private constructor(memberjson: memberjson, owner: Guild) {
2020
super(memberjson.id);
@@ -99,7 +99,7 @@ class Member extends SnowFlake {
9999
banner: this.banner as string | undefined,
100100
//TODO presence
101101
nick: this.nick,
102-
roles: this.roles.map((_) => _.id),
102+
roles: [...this.roles.keys()].map((_) => _.id),
103103
joined_at: this.joined_at,
104104
premium_since: this.premium_since,
105105
deaf: this.deaf,
@@ -358,20 +358,20 @@ class Member extends SnowFlake {
358358
memberjson.roles = (memberjson.roles as any[]).map((_) => _.id);
359359
console.error("Member role is incorrectly sent as role object instead of role ID");
360360
}
361-
this.roles = [];
361+
this.roles.clear();
362362
for (const strrole of memberjson.roles) {
363363
const role = this.guild.roleids.get(strrole);
364364
if (!role) {
365365
console.warn(strrole + " is not in ", this.guild.roleids);
366366
continue;
367367
}
368-
this.roles.push(role);
368+
this.roles.add(role);
369369
}
370370

371371
if (!this.user.bot) {
372372
const everyone = this.guild.roleids.get(this.guild.id);
373-
if (everyone && this.roles.indexOf(everyone) === -1) {
374-
this.roles.push(everyone);
373+
if (everyone && !this.roles.has(everyone)) {
374+
this.roles.add(everyone);
375375
}
376376
}
377377
continue;
@@ -384,13 +384,10 @@ class Member extends SnowFlake {
384384
}
385385

386386
const everyone = this.guild.roleids.get(this.guild.id);
387-
if (everyone && this.roles.indexOf(everyone) === -1) {
388-
this.roles.push(everyone);
387+
if (everyone && this.roles.has(everyone)) {
388+
this.roles.add(everyone);
389389
}
390390

391-
this.roles.sort((a, b) => {
392-
return this.guild.roles.indexOf(a) - this.guild.roles.indexOf(b);
393-
});
394391
if (changeNick) {
395392
this.nameChange();
396393
}
@@ -668,7 +665,7 @@ class Member extends SnowFlake {
668665
menu.show();
669666
}
670667
addRole(role: Role) {
671-
const roles = this.roles.map((_) => _.id);
668+
const roles = [...this.roles].map((_) => _.id);
672669
roles.push(role.id);
673670
fetch(this.info.api + "/guilds/" + this.guild.id + "/members/" + this.id, {
674671
method: "PATCH",
@@ -677,7 +674,7 @@ class Member extends SnowFlake {
677674
});
678675
}
679676
removeRole(role: Role) {
680-
let roles = this.roles.map((_) => _.id);
677+
let roles = [...this.roles].map((_) => _.id);
681678
roles = roles.filter((_) => _ !== role.id);
682679
fetch(this.info.api + "/guilds/" + this.guild.id + "/members/" + this.id, {
683680
method: "PATCH",
@@ -693,6 +690,9 @@ class Member extends SnowFlake {
693690
headers,
694691
});
695692
}
693+
get inOrderRoles() {
694+
return this.guild.roles.filter((_) => this.roles.has(_));
695+
}
696696
hasPermission(name: string, adminOver = true): boolean {
697697
if (this.isAdmin() && adminOver) {
698698
return true;
@@ -703,7 +703,7 @@ class Member extends SnowFlake {
703703
return false;
704704
}
705705
}
706-
for (const thing of this.roles) {
706+
for (const thing of this.inOrderRoles) {
707707
if (thing.permissions.getPermission(name)) {
708708
return true;
709709
}

src/webpage/user.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ class User extends SnowFlake {
533533
e.stopPropagation();
534534
const roles: [Role, string[]][] = [];
535535
for (const role of member.guild.roles) {
536-
if (!role.canManage() || member.roles.indexOf(role) !== -1) {
536+
if (!role.canManage() || member.roles.has(role)) {
537537
continue;
538538
}
539539
roles.push([role, [role.name]]);
@@ -559,7 +559,7 @@ class User extends SnowFlake {
559559
if (member) {
560560
e.stopPropagation();
561561
const roles: [Role, string[]][] = [];
562-
for (const role of member.roles) {
562+
for (const role of member.inOrderRoles) {
563563
if (!role.canManage()) {
564564
continue;
565565
}
@@ -1365,7 +1365,7 @@ class User extends SnowFlake {
13651365
}
13661366

13671367
roles.classList.add("flexltr", "rolesbox");
1368-
for (const role of member.roles) {
1368+
for (const role of member.inOrderRoles) {
13691369
if (role.id === member.guild.id) continue;
13701370
const roleDiv = document.createElement("div");
13711371
roleDiv.classList.add("rolediv");
@@ -1706,7 +1706,7 @@ class User extends SnowFlake {
17061706
}
17071707
const roles = document.createElement("div");
17081708
roles.classList.add("flexltr", "rolesbox");
1709-
for (const role of member.roles) {
1709+
for (const role of member.inOrderRoles) {
17101710
if (role.id === member.guild.id) continue;
17111711
const roleDiv = document.createElement("div");
17121712
roleDiv.classList.add("rolediv");

0 commit comments

Comments
 (0)