diff --git a/webpage/guild.js b/webpage/guild.js
index 6e75798..3fa9d77 100644
--- a/webpage/guild.js
+++ b/webpage/guild.js
@@ -341,12 +341,10 @@ class guild{
})
}
fillMember(member){
- member.guild=this;
const realroles=[];
for(const thing of member.roles){
realroles.push(this.getRole(thing));
}
- member.guild=this;
member.roles=realroles;
return member;
}
diff --git a/webpage/index.html b/webpage/index.html
index 0656ee8..3f9559c 100644
--- a/webpage/index.html
+++ b/webpage/index.html
@@ -17,6 +17,7 @@
+
diff --git a/webpage/localuser.js b/webpage/localuser.js
index df36c1e..dcabfbc 100644
--- a/webpage/localuser.js
+++ b/webpage/localuser.js
@@ -7,7 +7,7 @@ class localuser{
this.headers={"Content-type": "application/json; charset=UTF-8",Authorization:this.userinfo.token};
}
gottenReady(ready){
- this.usersettings;
+ this.usersettings=null;
this.initialized=true;
this.ready=ready;
this.guilds=[];
@@ -34,8 +34,9 @@ class localuser{
this.guildids[thing.guild_id].notisetting(thing);
}
for(const thing of ready.d.merged_members){
- const temp=new member(thing[0]);
- this.guildids[temp.guild_id].giveMember(temp);
+ const guild=this.guildids[thing[0].guild_id]
+ const temp=new member(thing[0],guild);
+ guild.giveMember(temp);
}
for(const thing of ready.d.read_state.entries){
const guild=this.resolveGuildidFromChannelID(thing.id)
diff --git a/webpage/member.js b/webpage/member.js
index c9b5656..453e0a0 100644
--- a/webpage/member.js
+++ b/webpage/member.js
@@ -1,9 +1,45 @@
class member{
- constructor(memberjson){
- for(const thing of Object.keys(memberjson)){
- this[thing]=memberjson[thing];
+ static already={};
+ constructor(memberjson,owner){
+ if(!owner){console.error("Guild not included in the creation of a member object")}
+ this.owner=owner;
+ let membery=memberjson;
+ if(memberjson.guild_member){
+ membery=memberjson.guild_member;
+ this.user=memberjson.user;
+ }
+ for(const thing of Object.keys(membery)){
+ if(thing==="guild"){continue}
+ this[thing]=membery[thing];
}
this.user=new user(this.user);
+ console.log(this)
+ }
+ get guild(){
+ return this.owner;
+ }
+ get localuser(){
+ return this.guild.localuser;
+ }
+ static async resolve(user,guild){
+ if(!member.already[guild.id]){
+ member.already[guild.id]={};
+ }else if(member.already[guild.id][user.id]){
+ const memb=member.already[guild.id][user.id]
+ if(memb instanceof Promise){
+ return await memb;
+ }
+ return memb;
+ }
+ const promoise= fetch(info.api.toString()+"/v9/users/"+user.id+"/profile?with_mutual_guilds=true&with_mutual_friends_count=true&guild_id="+guild.id,{headers:guild.headers}).then(_=>_.json()).then(json=>{
+ const memb=new member(json,guild);
+ member.already[guild.id][user.id]=memb;
+ guild.fillMember(memb);
+ console.log("resolved")
+ return memb
+ });
+ member.already[guild.id][user.id]=promoise;
+ return await promoise;
}
hasRole(ID){
for(const thing of this.roles){
@@ -14,6 +50,17 @@ class member{
}
return false;
}
+ getColor(){
+ console.log(this);
+ for(const thing of this.roles){
+ const color=thing.getColor();
+ console.log(thing);
+ if(color){
+ return color;
+ }
+ }
+ return "";
+ }
isAdmin(){
console.log(this);
return this.guild.properties.owner_id===this.user.id;
diff --git a/webpage/message.js b/webpage/message.js
index e17433b..06c247a 100644
--- a/webpage/message.js
+++ b/webpage/message.js
@@ -108,7 +108,14 @@ class cmessage{
const username=document.createElement("span");
replyline.appendChild(username);
const reply=document.createElement("div");
- username.classList.add("username")
+ username.classList.add("username");
+
+ member.resolve(this.author,this.guild).then(_=>{
+ console.log(_);
+ console.log(_.getColor());
+ username.style.color=_.getColor();
+ });
+
reply.classList.add("replytext");
replyline.appendChild(reply);
const line2=document.createElement("hr");
@@ -165,6 +172,11 @@ class cmessage{
const username=document.createElement("span");
username.classList.add("username")
profileclick(username,this.author);
+ member.resolve(this.author,this.guild).then(_=>{
+ console.log(_);
+ console.log(_.getColor());
+ username.style.color=_.getColor();
+ })
username.textContent=this.author.username;
const userwrap=document.createElement("tr")
userwrap.appendChild(username)
diff --git a/webpage/permissions.js b/webpage/permissions.js
new file mode 100644
index 0000000..d844fce
--- /dev/null
+++ b/webpage/permissions.js
@@ -0,0 +1,234 @@
+class permissions{
+ constructor(b){
+ this.permissions=BigInt(b);
+ }
+ getPermisionbit(b){
+ return Boolean((this.permissions>>BigInt(b))&1n);
+ }
+ setPermisionbit(b,state){
+ const bit=1n< {
- usercache[this.id+"+"+guild.id]={done:false};
- fetch(info.api.toString()+"/v9/users/"+this.id+"/profile?with_mutual_guilds=true&with_mutual_friends_count=false&guild_id="+guild.id).then(json).then(str=>{
- return new member(str);
- });
- });
- usercache[this.id+"+"+guild.id]=tempy;
- }
+ await member.resolve(this,guild);
}
buildpfp(){
const pfp=document.createElement('img');