diff --git a/src/snek/static/base.css b/src/snek/static/base.css index 5447efb..6fffd16 100644 --- a/src/snek/static/base.css +++ b/src/snek/static/base.css @@ -104,6 +104,7 @@ main { message-list { flex: 1;; height: 200px; + padding-bottom: 40px; overflow-y: auto; } .chat-messages { diff --git a/src/snek/static/chat-window.js b/src/snek/static/chat-window.js index 8acf595..0727225 100644 --- a/src/snek/static/chat-window.js +++ b/src/snek/static/chat-window.js @@ -1,10 +1,12 @@ class ChatWindowElement extends HTMLElement { + receivedHistory = false constructor() { super(); this.attachShadow({ mode: 'open' }); this.component = document.createElement('section'); + this.shadowRoot.appendChild(this.component); } @@ -49,9 +51,10 @@ class ChatWindowElement extends HTMLElement { }) const me = this channelElement.addEventListener("message",(message)=>{ - message.detail.element.scrollIntoView({behavior: 'smooth'}) - + message.detail.element.scrollIntoView() + }) + } diff --git a/src/snek/static/message-list.js b/src/snek/static/message-list.js index a45cd6d..29e8a0b 100644 --- a/src/snek/static/message-list.js +++ b/src/snek/static/message-list.js @@ -10,11 +10,11 @@ class MessageListElement extends HTMLElement { url = null container = null messageEventSchedule = null + observer = null constructor() { super() this.attachShadow({ mode: 'open' }); this.component = document.createElement('div') - this.shadowRoot.appendChild(this.component ) } createElement(message){ diff --git a/src/snek/static/schedule.js b/src/snek/static/schedule.js index fefb503..0eb41d1 100644 --- a/src/snek/static/schedule.js +++ b/src/snek/static/schedule.js @@ -37,6 +37,7 @@ class Schedule { this.timeOut = setTimeout(()=>{ clearTimeout(me.timeOut) me.timeOut = null + func(me.timeOutCount) me.cancelDelay() me.timeOutCount = 0 }, this.msDelay) diff --git a/src/snek/view/rpc.py b/src/snek/view/rpc.py index 3ac54a3..514db45 100644 --- a/src/snek/view/rpc.py +++ b/src/snek/view/rpc.py @@ -18,6 +18,7 @@ class RPCView(BaseView): async def get_messages(self, channel_uid,offset=0): messages = [] async for message in self.services.channel_message.query("SELECT * FROM channel_message ORDER BY created_at DESC LIMIT 30"): #"SELECT uid, channel_uid, user_uid, message, created_at FROM channel_message WHERE channel_uid = :channel_uid ORDER BY created_at DESC LIMIT 30 OFFSET :offset",{"channel_uid":channel_uid,"offset":int(offset)}): + print("JEEEHHH\n",flush=True) user = await self.services.user.get(uid=message["user_uid"]) @@ -25,7 +26,7 @@ class RPCView(BaseView): print("User not found!",flush= True) continue - messages.append(dict( + messages.insert(0,dict( uid=message["uid"], user_uid=message["user_uid"], channel_uid=message["channel_uid"],