remove more uses of the deprictated function

This commit is contained in:
MathMan05
2024-08-26 14:16:01 -05:00
parent 00946b500a
commit 3894fcb976
8 changed files with 156 additions and 145 deletions

View File

@@ -35,8 +35,8 @@ class Channel{
topic:string;
nsfw:boolean;
position:number;
lastreadmessageid:SnowFlake<Message>|null;
lastmessageid:SnowFlake<Message>|null;
lastreadmessageid:string|undefined;
lastmessageid:string|undefined;
mentions:number;
lastpin:string;
move_id:SnowFlake<Channel>|null;
@@ -46,8 +46,8 @@ class Channel{
static contextmenu=new Contextmenu<Channel,undefined>("channel menu");
replyingto:Message|null;
infinite:InfiniteScroller;
idToPrev:Map<SnowFlake<Message>,SnowFlake<Message>>=new Map();
idToNext:Map<SnowFlake<Message>,SnowFlake<Message>>=new Map();
idToPrev:Map<string,string>=new Map();
idToNext:Map<string,string>=new Map();
messages:Map<string,Message>=new Map();
get id(){
return this.snowflake.id;
@@ -170,20 +170,20 @@ class Channel{
}
setUpInfiniteScroller(){
this.infinite=new InfiniteScroller(async function(this:Channel,id:string,offset:number):Promise<string|undefined>{
const snowflake=(this.messages.get(id) as Message).snowflake;
const snowflake=id;
if(offset===1){
if(this.idToPrev.has(snowflake)){
return this.idToPrev.get(snowflake)?.id;
return this.idToPrev.get(snowflake);
}else{
await this.grabBefore(id);
return this.idToPrev.get(snowflake)?.id;
return this.idToPrev.get(snowflake);
}
}else{
if(this.idToNext.has(snowflake)){
return this.idToNext.get(snowflake)?.id;
return this.idToNext.get(snowflake);
}else if(this.lastmessage?.id!==id){
await this.grabAfter(id);
return this.idToNext.get(snowflake)?.id;
return this.idToNext.get(snowflake);
}else{
console.log("at bottom")
}
@@ -246,11 +246,11 @@ class Channel{
this.topic=json.topic;
this.nsfw=json.nsfw;
this.position=json.position;
this.lastreadmessageid=null;
this.lastreadmessageid=undefined;
if(json.last_message_id){
this.lastmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message);
this.lastmessageid=json.last_message_id;
}else{
this.lastmessageid=null;
this.lastmessageid=undefined;
}
this.setUpInfiniteScroller();
}
@@ -267,7 +267,7 @@ class Channel{
return this.owner.info;
}
readStateInfo(json:readyjson["d"]["read_state"]["entries"][0]){
this.lastreadmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message);
this.lastreadmessageid=json.last_message_id;
this.mentions=json.mention_count;
this.mentions??=0;
this.lastpin=json.last_pin_timestamp;
@@ -629,9 +629,9 @@ class Channel{
}
}
async getmessage(id:string):Promise<Message>{
const snowflake=SnowFlake.getSnowFlakeFromID(id,Message) as SnowFlake<Message>;
if(snowflake.getObject()){
return snowflake.getObject();
const message=this.messages.get(id);
if(message){
return message;
}else{
const gety=await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?limit=1&around="+id,{headers:this.headers})
const json=await gety.json();
@@ -705,7 +705,7 @@ class Channel{
lastmessage:Message|undefined;
async putmessages(){
if(this.allthewayup){return};
if(this.lastreadmessageid&&this.lastreadmessageid.getObject()){
if(this.lastreadmessageid&&this.messages.has(this.lastreadmessageid)){
return
}
const j=await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?limit=100",{
@@ -720,8 +720,8 @@ class Channel{
for(const thing of response){
const message=new Message(thing,this);
if(prev){
this.idToNext.set(message.snowflake,prev.snowflake);
this.idToPrev.set(prev.snowflake,message.snowflake);
this.idToNext.set(message.id,prev.id);
this.idToPrev.set(prev.id,message.id);
}else{
this.lastmessage=message;
}
@@ -747,7 +747,7 @@ class Channel{
await fetch(this.info.api+"/channels/"+this.id+"/messages?limit=100&after="+id,{
headers:this.headers
}).then((j)=>{return j.json()}).then(response=>{
let previd:SnowFlake<Message>=SnowFlake.getSnowFlakeFromID(id,Message);
let previd:string=id;
for(const i in response){
let messager:Message;
let willbreak=false
@@ -757,9 +757,9 @@ class Channel{
messager=SnowFlake.getSnowFlakeFromID(response[i].id,Message).getObject();
willbreak=true;
}
this.idToPrev.set(messager.snowflake,previd);
this.idToNext.set(previd,messager.snowflake);
previd=messager.snowflake;
this.idToPrev.set(messager.id,previd);
this.idToNext.set(previd,messager.id);
previd=messager.id;
this.messageids.set(messager.snowflake,messager);
if(willbreak){
break;
@@ -769,36 +769,36 @@ class Channel{
})
return;
}
topid:SnowFlake<Message>;
topid:string;
async grabBefore(id:string){
if(this.topid&&id===this.topid.id){
if(this.topid&&id===this.topid){
return;
}
await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?before="+id+"&limit=100",{
await fetch(this.info.api+"/channels/"+this.id+"/messages?before="+id+"&limit=100",{
headers:this.headers
}).then((j)=>{return j.json()}).then((response:messagejson[])=>{
if(response.length<100){
this.allthewayup=true;
if(response.length===0){
this.topid=SnowFlake.getSnowFlakeFromID(id,Message);
this.topid=id;
}
}
let previd=SnowFlake.getSnowFlakeFromID(id,Message) as SnowFlake<Message>;
let previd=id;
for(const i in response){
let messager:Message;
let willbreak=false;
if(!SnowFlake.hasSnowFlakeFromID(response[i].id,Message)){
messager=new Message(response[i],this);
}else{
if(this.messages.has(response[i].id)){
console.log("flaky")
messager=SnowFlake.getSnowFlakeFromID(response[i].id,Message).getObject();
messager=this.messages.get(response[i].id) as Message;
willbreak=true;
}else{
messager=new Message(response[i],this);
}
this.idToNext.set(messager.snowflake,previd);
this.idToPrev.set(previd,messager.snowflake);
previd=messager.snowflake;
this.idToNext.set(messager.id,previd);
this.idToPrev.set(previd,messager.id);
previd=messager.id;
this.messageids.set(messager.snowflake,messager);
if(+i===response.length-1&&response.length<100){
@@ -839,13 +839,13 @@ class Channel{
const loading=document.getElementById("loadingdiv") as HTMLDivElement;
const removetitle=document.getElementById("removetitle");
//messages.innerHTML="";
let id:SnowFlake<Message>|undefined;
if(this.lastreadmessageid&&this.lastreadmessageid.getObject()){
let id:string|undefined;
if(this.lastreadmessageid&&this.messages.has(this.lastreadmessageid)){
id=this.lastreadmessageid;
}else if(this.lastreadmessageid&&(id=this.findClosest(this.lastreadmessageid))){
}else if(this.lastmessage&&this.lastmessage.snowflake){
id=this.goBackIds(this.lastmessage.snowflake,50);
}else if(this.lastmessageid&&this.messages.has(this.lastmessageid)){
id=this.goBackIds(this.lastmessageid,50);
}
if(!id){
if(!removetitle){
@@ -861,17 +861,17 @@ class Channel{
}else if(removetitle){
removetitle.remove();
}
messages.append(await this.infinite.getDiv(id.id));
messages.append(await this.infinite.getDiv(id));
this.infinite.updatestuff();
this.infinite.watchForChange().then(async _=>{
//await new Promise(resolve => setTimeout(resolve, 0));
this.infinite.focus(id.id,false);//if someone could figure out how to make this work correctly without this, that's be great :P
this.infinite.focus(id,false);//if someone could figure out how to make this work correctly without this, that's be great :P
loading.classList.remove("loading");
});
//this.infinite.focus(id.id,false);
}
private goBackIds(id:SnowFlake<Message>,back:number,returnifnotexistant=true):SnowFlake<Message>|undefined{
private goBackIds(id:string,back:number,returnifnotexistant=true):string|undefined{
while(back!==0){
const nextid=this.idToPrev.get(id);
if(nextid){
@@ -887,19 +887,18 @@ class Channel{
}
return id;
}
private findClosest(snowflake:SnowFlake<Message>){
if(!this.lastmessage) return;
let flake:SnowFlake<Message>|null|undefined=this.lastmessage.snowflake;
if(!snowflake){return};
const time=snowflake.getUnixTime();
let flaketime=flake.getUnixTime()
private findClosest(id:string|undefined){
if(!this.lastmessageid||!id) return;
let flake:string|undefined=this.lastmessageid;
const time=Number((BigInt(id)>>22n)+1420070400000n);
let flaketime=Number((BigInt(flake)>>22n)+1420070400000n);
while(flake&&time<flaketime){
flake=this.idToPrev.get(flake);
if(!flake){
return undefined;
}
flaketime=flake.getUnixTime();
flaketime=Number((BigInt(flake)>>22n)+1420070400000n);
}
return flake;
}
@@ -999,15 +998,15 @@ class Channel{
const messagez=new Message(messagep.d,this);
this.lastmessage=messagez;
if(this.lastmessageid){
this.idToNext.set(this.lastmessageid,messagez.snowflake);
this.idToPrev.set(messagez.snowflake,this.lastmessageid);
this.idToNext.set(this.lastmessageid,messagez.id);
this.idToPrev.set(messagez.id,this.lastmessageid);
}
this.lastmessageid=messagez.snowflake;
this.lastmessageid=messagez.id;
this.messageids.set(messagez.snowflake,messagez);
if(messagez.author===this.localuser.user){
this.lastreadmessageid=messagez.snowflake;
this.lastreadmessageid=messagez.id;
if(this.myhtml){
this.myhtml.classList.remove("cunread");
}

View File

@@ -101,12 +101,12 @@ class Group extends Channel{
this.guild_id="@me";
this.messageids=new Map();
this.permission_overwrites=new Map();
this.lastmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message);
this.lastmessageid=json.last_message_id;
this.lastmessageid??=null;
this.mentions=0;
this.setUpInfiniteScroller();
if(this.lastmessageid){
this.position=this.lastmessageid.getUnixTime()
this.position=Number((BigInt(this.lastmessageid)>>22n)+1420070400000n);
}
this.position=-Math.max(this.position,this.snowflake.getUnixTime());
}
@@ -145,13 +145,13 @@ class Group extends Channel{
messageCreate(messagep){
const messagez=new Message(messagep.d,this);
if(this.lastmessageid){
this.idToNext.set(this.lastmessageid,messagez.snowflake);
this.idToNext.set(this.lastmessageid,messagez.id);
}
this.idToPrev.set(messagez.snowflake,this.lastmessageid);
this.lastmessageid=messagez.snowflake;
this.idToPrev.set(messagez.id,this.lastmessageid);
this.lastmessageid=messagez.id;
this.messageids.set(messagez.snowflake,messagez);
if(messagez.author===this.localuser.user){
this.lastreadmessageid=messagez.snowflake;
this.lastreadmessageid=messagez.id;
if(this.myhtml){
this.myhtml.classList.remove("cunread");
}

View File

@@ -384,7 +384,7 @@ class Guild{
return this.member.isAdmin()
}
async markAsRead(){
const build:{read_states:{channel_id:SnowFlake<Channel>,message_id:SnowFlake<Message>|null,read_state_type:number}[]}={read_states:[]};
const build:{read_states:{channel_id:SnowFlake<Channel>,message_id:string|null,read_state_type:number}[]}={read_states:[]};
for(const thing of this.channels){
if(thing.hasunreads){
build.read_states.push({channel_id:thing.snowflake,message_id:thing.lastmessageid,read_state_type:0});

View File

@@ -60,7 +60,7 @@ class Message{
Message.contextmenu.addbutton("Copy message id",function(this:Message){
navigator.clipboard.writeText(this.id);
});
Message.contextmenu.addsubmenu("Add reaction",function(this:Message,e:{x:number,y:number}){
Message.contextmenu.addsubmenu("Add reaction",function(this:Message,arg,e:MouseEvent){
Emoji.emojiPicker(e.x,e.y,this.localuser).then(_=>{
this.reactionToggle(_);
});
@@ -224,25 +224,28 @@ class Message{
this.div.innerHTML="";
this.div=undefined;
}
const prev=this.channel.idToPrev.get(this.snowflake) as SnowFlake<Message> | null;
const next=this.channel.idToNext.get(this.snowflake) as SnowFlake<Message> | null;
const prev=this.channel.idToPrev.get(this.id);
const next=this.channel.idToNext.get(this.id);
if(prev){
this.channel.idToPrev.delete(this.snowflake)
this.channel.idToPrev.delete(this.id)
}
if(next){
this.channel.idToNext.delete(this.snowflake)
this.channel.idToNext.delete(this.id)
}
if(prev&&next){
this.channel.idToPrev.set(next,prev);
this.channel.idToNext.set(prev,next);
}
this.channel.messageids.delete(this.snowflake);
if(prev&&prev.getObject()){
prev.getObject().generateMessage();
if(prev){
const prevmessage=this.channel.messages.get(prev);
if(prevmessage){
prevmessage.generateMessage();
}
}
if(this.channel.lastmessage===this){
if(prev){
this.channel.lastmessage=prev.getObject();
this.channel.lastmessage=this.channel.messages.get(prev);
}else{
this.channel.lastmessage=undefined;
}
@@ -250,7 +253,12 @@ class Message{
}
reactdiv:WeakRef<HTMLDivElement>;
blockedPropigate(){
const premessage=this.channel.idToPrev.get(this.snowflake)?.getObject();
const previd=this.channel.idToPrev.get(this.id);
if(!previd){
this.generateMessage();
return;
}
const premessage=this.channel.messages.get(previd);
if(premessage?.author===this.author){
premessage.blockedPropigate();
}else{
@@ -260,7 +268,7 @@ class Message{
generateMessage(premessage:Message|undefined=undefined,ignoredblock=false){
if(!this.div) return;
if(!premessage){
premessage=this.channel.idToPrev.get(this.snowflake)?.getObject();
premessage=this.channel.messages.get(this.channel.idToPrev.get(this.id) as string);
}
const div=this.div;
if(this===this.channel.replyingto){
@@ -283,7 +291,7 @@ class Message{
let next:Message|undefined=this;
while(next?.author===this.author){
next.generateMessage(undefined);
next=this.channel.idToNext.get(next.snowflake)?.getObject();
next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string);
}
if(this.channel.infinite.scroll&&scroll){
this.channel.infinite.scroll.scrollTop=scroll;
@@ -301,10 +309,10 @@ class Message{
build.classList.add("blocked","topMessage")
const span=document.createElement("span");
let count=1;
let next=this.channel.idToNext.get(this.snowflake)?.getObject()
let next=this.channel.messages.get(this.channel.idToNext.get(this.id) as string);
while(next?.author===this.author){
count++;
next=this.channel.idToNext.get(next.snowflake)?.getObject()
next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string);
}
span.textContent=`You have this user blocked, click to see the ${count} blocked messages.`;
build.append(span);
@@ -314,7 +322,7 @@ class Message{
let next:Message|undefined=this;
while(next?.author===this.author){
next.generateMessage(undefined,true);
next=this.channel.idToNext.get(next.snowflake)?.getObject();
next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string);
console.log("loopy")
}
if(this.channel.infinite.scroll&&scroll){