From da72a15068fe14eeb2b50b4cd3342fb4b70b0c79 Mon Sep 17 00:00:00 2001 From: retoor Date: Tue, 28 Jan 2025 15:52:13 +0100 Subject: [PATCH] Removed pyc files. --- src/snek/static/chat-window.js | 4 +-- src/snek/static/message-list.js | 10 ++++++-- src/snek/static/schedule.js | 45 +++++++++++++++++++++++++++++++++ src/snek/templates/web.html | 1 + 4 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/snek/static/schedule.js diff --git a/src/snek/static/chat-window.js b/src/snek/static/chat-window.js index f6b0102..8acf595 100644 --- a/src/snek/static/chat-window.js +++ b/src/snek/static/chat-window.js @@ -49,10 +49,8 @@ class ChatWindowElement extends HTMLElement { }) const me = this channelElement.addEventListener("message",(message)=>{ - console.info("ROCKSTARTSS") - setTimeout(()=>{ message.detail.element.scrollIntoView({behavior: 'smooth'}) - },10) + }) } diff --git a/src/snek/static/message-list.js b/src/snek/static/message-list.js index 7e17afb..a45cd6d 100644 --- a/src/snek/static/message-list.js +++ b/src/snek/static/message-list.js @@ -9,6 +9,7 @@ class MessageListElement extends HTMLElement { room = null url = null container = null + messageEventSchedule = null constructor() { super() this.attachShadow({ mode: 'open' }); @@ -40,6 +41,7 @@ class MessageListElement extends HTMLElement { element.appendChild(avatar) element.appendChild(messageContent) + message.element = element @@ -61,8 +63,12 @@ class MessageListElement extends HTMLElement { this.messages.push(obj) this.container.appendChild(element) const me = this - this.dispatchEvent(new CustomEvent("message", {detail:obj,bubbles:true})) + this.messageEventSchedule.delay(() => { + me.dispatchEvent(new CustomEvent("message", {detail:obj,bubbles:true})) + }) + + return obj } scrollBottom(){ @@ -77,7 +83,7 @@ class MessageListElement extends HTMLElement { this.container = document.createElement('div') //this.container.classList.add("chat-messages") this.component.appendChild(this.container) - + this.messageEventSchedule = new Schedule(500) this.messages = [] this.channel_uid = this.getAttribute("channel") const me = this diff --git a/src/snek/static/schedule.js b/src/snek/static/schedule.js new file mode 100644 index 0000000..fefb503 --- /dev/null +++ b/src/snek/static/schedule.js @@ -0,0 +1,45 @@ + + +class Schedule { + + constructor(msDelay) { + if(!msDelay){ + msDelay = 100 + } + this.msDelay = msDelay + this._once = false + this.timeOutCount = 0; + this.timeOut = null + this.interval = null + } + cancelRepeat() { + clearInterval(this.interval) + this.interval = null + } + cancelDelay() { + clearTimeout(this.interval) + this.interval = null + } + repeat(func){ + if(this.interval){ + return false + } + this.interval = setInterval(()=>{ + func() + }, this.msDelay) + } + delay(func) { + this.timeOutCount++ + if(this.timeOut){ + this.cancelDelay() + } + const me = this + this.timeOut = setTimeout(()=>{ + clearTimeout(me.timeOut) + me.timeOut = null + me.cancelDelay() + me.timeOutCount = 0 + }, this.msDelay) + } + +} \ No newline at end of file diff --git a/src/snek/templates/web.html b/src/snek/templates/web.html index 03ef013..05ef008 100644 --- a/src/snek/templates/web.html +++ b/src/snek/templates/web.html @@ -4,6 +4,7 @@ Snek +