more checks for staying at bottom

This commit is contained in:
MathMan05 2024-08-17 13:29:54 -05:00
parent 12ad9c00b9
commit 71dd54fc0e
4 changed files with 27 additions and 7 deletions

View file

@ -53,11 +53,17 @@ class InfiniteScroller {
currrunning = false;
async addedBottom() {
this.updatestuff();
const scrollBottom = this.scrollBottom;
const func = this.snapBottom();
await this.watchForChange();
if (scrollBottom < 30) {
this.scroll.scrollTop = this.scroll.scrollHeight;
}
func();
}
snapBottom() {
const scrollBottom = this.scrollBottom;
return () => {
if (scrollBottom < 30) {
this.scroll.scrollTop = this.scroll.scrollHeight;
}
};
}
async watchForTop() {
let again = false;

View file

@ -103,6 +103,7 @@ class Message {
});
}
giveData(messagejson) {
const func = this.channel.infinite.snapBottom();
for (const thing of Object.keys(messagejson)) {
if (thing === "attachments") {
this.attachments = [];
@ -154,6 +155,7 @@ class Message {
if (this.div) {
this.generateMessage();
}
func();
}
canDelete() {
return this.channel.hasPermission("MANAGE_MESSAGES") || this.author.snowflake === this.localuser.user.snowflake;
@ -389,6 +391,7 @@ class Message {
const reactdiv = this.reactdiv.deref();
if (!reactdiv)
return;
const func = this.channel.infinite.snapBottom();
reactdiv.innerHTML = "";
for (const thing of this.reactions) {
console.log(thing, ":3");
@ -418,6 +421,7 @@ class Message {
this.reactionToggle(thing.emoji.name);
};
}
func();
}
giveReaction(data, member) {
for (const thing of this.reactions) {

View file

@ -55,10 +55,16 @@ class InfiniteScroller{
currrunning:boolean=false;
async addedBottom(){
this.updatestuff();
const scrollBottom=this.scrollBottom;
const func=this.snapBottom();
await this.watchForChange();
if(scrollBottom<30){
this.scroll.scrollTop=this.scroll.scrollHeight;
func();
}
snapBottom(){
const scrollBottom=this.scrollBottom;
return ()=>{
if(scrollBottom<30){
this.scroll.scrollTop=this.scroll.scrollHeight;
}
}
}
private async watchForTop():Promise<void>{

View file

@ -110,6 +110,7 @@ class Message{
})
}
giveData(messagejson:messagejson){
const func=this.channel.infinite.snapBottom();
for(const thing of Object.keys(messagejson)){
if(thing==="attachments"){
this.attachments=[];
@ -158,6 +159,7 @@ class Message{
if(this.div){
this.generateMessage();
}
func();
}
canDelete(){
return this.channel.hasPermission("MANAGE_MESSAGES")||this.author.snowflake===this.localuser.user.snowflake;
@ -394,6 +396,7 @@ class Message{
updateReactions(){
const reactdiv=this.reactdiv.deref();
if(!reactdiv) return;
const func=this.channel.infinite.snapBottom();
reactdiv.innerHTML="";
for(const thing of this.reactions){
console.log(thing,":3")
@ -422,6 +425,7 @@ class Message{
this.reactionToggle(thing.emoji.name);
}
}
func();
}
giveReaction(data:{name:string},member:Member|{id:string}){
for(const thing of this.reactions){