Scroll infinite.
This commit is contained in:
parent
3ee7c6d802
commit
95a8a45842
@ -56,25 +56,40 @@
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
const messagesContainer = document.querySelector(".chat-messages");
|
||||
function isScrolledPastHalf() {
|
||||
let scrollTop = messagesContainer.scrollTop;
|
||||
let scrollableHeight = messagesContainer.scrollHeight - messagesContainer.clientHeight;
|
||||
|
||||
if (scrollTop < scrollableHeight / 2) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
let isLoadingExtra = false;
|
||||
async function loadExtra() {
|
||||
|
||||
const offsetMessage = messagesContainer.querySelector(".chat-messages :nth-child(10)");
|
||||
if(!offsetMessage){
|
||||
//const offsetMessage = messagesContainer.querySelector(".chat-messages :nth-child(10)");
|
||||
//if(!offsetMessage){
|
||||
// return
|
||||
//}
|
||||
const firstMessage = messagesContainer.querySelector(".message:first-child");
|
||||
//if(offsetMessage.dataset.seen){
|
||||
// return
|
||||
//}
|
||||
if(isLoadingExtra){
|
||||
return
|
||||
}
|
||||
const firstMessage = messagesContainer.querySelector(".message:first-child");
|
||||
if(offsetMessage.dataset.seen){
|
||||
return
|
||||
if(isScrolledPastHalf()){
|
||||
isLoadingExtra = true
|
||||
|
||||
}
|
||||
|
||||
if(isElementVisible(offsetMessage)){
|
||||
offsetMessage.dataset.seen = true
|
||||
const messages = await app.rpc.getMessages(channelUid, 1, offsetMessage.dataset.created_at);
|
||||
messages.forEach((message) => {
|
||||
firstMessage.insertAdjacentHTML("beforebegin", message.html);
|
||||
})
|
||||
}
|
||||
isLoadingExtra = false;
|
||||
}
|
||||
messagesContainer.addEventListener("scroll",()=>{
|
||||
loadExtra()
|
||||
|
Loading…
Reference in New Issue
Block a user