Compare commits
No commits in common. "99d335ac244c2258d82821344fa517857a782f4a" and "d93d48ef7e023c62bfa9b64ede20cd9f86c3242e" have entirely different histories.
99d335ac24
...
d93d48ef7e
@ -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 {
|
||||||
|
|||||||
@ -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)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -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>
|
||||||
|
|||||||
@ -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"],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user