Compare commits

..

No commits in common. "99d335ac244c2258d82821344fa517857a782f4a" and "d93d48ef7e023c62bfa9b64ede20cd9f86c3242e" have entirely different histories.

6 changed files with 8 additions and 64 deletions

View File

@ -104,7 +104,6 @@ main {
message-list { message-list {
flex: 1;; flex: 1;;
height: 200px; height: 200px;
padding-bottom: 40px;
overflow-y: auto; overflow-y: auto;
} }
.chat-messages { .chat-messages {

View File

@ -1,12 +1,10 @@
class ChatWindowElement extends HTMLElement { class ChatWindowElement extends HTMLElement {
receivedHistory = false
constructor() { constructor() {
super(); super();
this.attachShadow({ mode: 'open' }); this.attachShadow({ mode: 'open' });
this.component = document.createElement('section'); this.component = document.createElement('section');
this.shadowRoot.appendChild(this.component); this.shadowRoot.appendChild(this.component);
} }
@ -51,11 +49,12 @@ class ChatWindowElement extends HTMLElement {
}) })
const me = this const me = this
channelElement.addEventListener("message",(message)=>{ channelElement.addEventListener("message",(message)=>{
message.detail.element.scrollIntoView() console.info("ROCKSTARTSS")
setTimeout(()=>{
message.detail.element.scrollIntoView({behavior: 'smooth'})
},10)
}) })
} }

View File

@ -9,12 +9,11 @@ class MessageListElement extends HTMLElement {
room = null room = null
url = null url = null
container = null container = null
messageEventSchedule = null
observer = null
constructor() { constructor() {
super() super()
this.attachShadow({ mode: 'open' }); this.attachShadow({ mode: 'open' });
this.component = document.createElement('div') this.component = document.createElement('div')
this.shadowRoot.appendChild(this.component ) this.shadowRoot.appendChild(this.component )
} }
createElement(message){ createElement(message){
@ -43,7 +42,6 @@ class MessageListElement extends HTMLElement {
message.element = element message.element = element
return element return element
@ -63,11 +61,7 @@ class MessageListElement extends HTMLElement {
this.messages.push(obj) this.messages.push(obj)
this.container.appendChild(element) this.container.appendChild(element)
const me = this 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 return obj
} }
@ -83,7 +77,7 @@ class MessageListElement extends HTMLElement {
this.container = document.createElement('div') this.container = document.createElement('div')
//this.container.classList.add("chat-messages") //this.container.classList.add("chat-messages")
this.component.appendChild(this.container) this.component.appendChild(this.container)
this.messageEventSchedule = new Schedule(500)
this.messages = [] this.messages = []
this.channel_uid = this.getAttribute("channel") this.channel_uid = this.getAttribute("channel")
const me = this const me = this

View File

@ -1,46 +0,0 @@
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
func(me.timeOutCount)
me.cancelDelay()
me.timeOutCount = 0
}, this.msDelay)
}
}

View File

@ -4,7 +4,6 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Snek</title> <title>Snek</title>
<script src="/schedule.js"></script>
<script src="/app.js"></script> <script src="/app.js"></script>
<script src="/models.js"></script> <script src="/models.js"></script>
<script src="/message-list.js"></script> <script src="/message-list.js"></script>

View File

@ -18,7 +18,6 @@ class RPCView(BaseView):
async def get_messages(self, channel_uid,offset=0): async def get_messages(self, channel_uid,offset=0):
messages = [] 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)}): 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) print("JEEEHHH\n",flush=True)
user = await self.services.user.get(uid=message["user_uid"]) user = await self.services.user.get(uid=message["user_uid"])
@ -26,7 +25,7 @@ class RPCView(BaseView):
print("User not found!",flush= True) print("User not found!",flush= True)
continue continue
messages.insert(0,dict( messages.append(dict(
uid=message["uid"], uid=message["uid"],
user_uid=message["user_uid"], user_uid=message["user_uid"],
channel_uid=message["channel_uid"], channel_uid=message["channel_uid"],