remove more uses of the deprictated function
This commit is contained in:
parent
00946b500a
commit
3894fcb976
8 changed files with 156 additions and 145 deletions
|
@ -154,23 +154,23 @@ class Channel {
|
|||
}
|
||||
setUpInfiniteScroller() {
|
||||
this.infinite = new InfiniteScroller(async function (id, offset) {
|
||||
const snowflake = this.messages.get(id).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");
|
||||
|
@ -237,12 +237,12 @@ 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();
|
||||
}
|
||||
|
@ -259,7 +259,7 @@ class Channel {
|
|||
return this.owner.info;
|
||||
}
|
||||
readStateInfo(json) {
|
||||
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;
|
||||
|
@ -626,9 +626,9 @@ class Channel {
|
|||
}
|
||||
}
|
||||
async getmessage(id) {
|
||||
const snowflake = SnowFlake.getSnowFlakeFromID(id, 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 });
|
||||
|
@ -705,7 +705,7 @@ class Channel {
|
|||
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", {
|
||||
|
@ -719,8 +719,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.getSnowFlakeFromID(id, Message);
|
||||
let previd = id;
|
||||
for (const i in response) {
|
||||
let messager;
|
||||
let willbreak = false;
|
||||
|
@ -758,9 +758,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;
|
||||
|
@ -772,33 +772,33 @@ class Channel {
|
|||
}
|
||||
topid;
|
||||
async grabBefore(id) {
|
||||
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) => {
|
||||
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);
|
||||
let previd = id;
|
||||
for (const i in response) {
|
||||
let messager;
|
||||
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);
|
||||
willbreak = true;
|
||||
}
|
||||
this.idToNext.set(messager.snowflake, previd);
|
||||
this.idToPrev.set(previd, messager.snowflake);
|
||||
previd = messager.snowflake;
|
||||
else {
|
||||
messager = new Message(response[i], this);
|
||||
}
|
||||
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) {
|
||||
this.topid = previd;
|
||||
|
@ -840,13 +840,13 @@ class Channel {
|
|||
const removetitle = document.getElementById("removetitle");
|
||||
//messages.innerHTML="";
|
||||
let id;
|
||||
if (this.lastreadmessageid && this.lastreadmessageid.getObject()) {
|
||||
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) {
|
||||
|
@ -863,11 +863,11 @@ 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);
|
||||
|
@ -890,22 +890,18 @@ class Channel {
|
|||
}
|
||||
return id;
|
||||
}
|
||||
findClosest(snowflake) {
|
||||
if (!this.lastmessage)
|
||||
findClosest(id) {
|
||||
if (!this.lastmessageid || !id)
|
||||
return;
|
||||
let flake = this.lastmessage.snowflake;
|
||||
if (!snowflake) {
|
||||
return;
|
||||
}
|
||||
;
|
||||
const time = snowflake.getUnixTime();
|
||||
let flaketime = flake.getUnixTime();
|
||||
let flake = 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;
|
||||
}
|
||||
|
@ -1013,13 +1009,13 @@ 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");
|
||||
}
|
||||
|
|
|
@ -95,12 +95,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());
|
||||
}
|
||||
|
@ -139,13 +139,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");
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ class Message {
|
|||
Message.contextmenu.addbutton("Copy message id", function () {
|
||||
navigator.clipboard.writeText(this.id);
|
||||
});
|
||||
Message.contextmenu.addsubmenu("Add reaction", function (e) {
|
||||
Message.contextmenu.addsubmenu("Add reaction", function (arg, e) {
|
||||
Emoji.emojiPicker(e.x, e.y, this.localuser).then(_ => {
|
||||
this.reactionToggle(_);
|
||||
});
|
||||
|
@ -223,25 +223,28 @@ class Message {
|
|||
this.div.innerHTML = "";
|
||||
this.div = undefined;
|
||||
}
|
||||
const prev = this.channel.idToPrev.get(this.snowflake);
|
||||
const next = this.channel.idToNext.get(this.snowflake);
|
||||
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;
|
||||
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();
|
||||
}
|
||||
|
@ -262,7 +270,7 @@ class Message {
|
|||
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));
|
||||
}
|
||||
const div = this.div;
|
||||
if (this === this.channel.replyingto) {
|
||||
|
@ -284,7 +292,7 @@ class Message {
|
|||
let next = 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));
|
||||
}
|
||||
if (this.channel.infinite.scroll && scroll) {
|
||||
this.channel.infinite.scroll.scrollTop = scroll;
|
||||
|
@ -304,10 +312,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));
|
||||
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));
|
||||
}
|
||||
span.textContent = `You have this user blocked, click to see the ${count} blocked messages.`;
|
||||
build.append(span);
|
||||
|
@ -317,7 +325,7 @@ class Message {
|
|||
let next = 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));
|
||||
console.log("loopy");
|
||||
}
|
||||
if (this.channel.infinite.scroll && scroll) {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
"removeComments": false,
|
||||
"noImplicitThis":true,
|
||||
"useUnknownInCatchVariables":true,
|
||||
"strictNullChecks":true
|
||||
"strictNullChecks":false
|
||||
},
|
||||
"include": [
|
||||
"./webpage/*.ts"
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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});
|
||||
|
|
|
@ -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){
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue