Update.
This commit is contained in:
parent
bca39a612c
commit
5b88350ff2
@ -209,11 +209,16 @@ message-list {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.message {
|
.message {
|
||||||
|
.text {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
hyphens: auto;
|
hyphens: auto;
|
||||||
|
img {
|
||||||
|
max-width: 90%;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
.avatar {
|
.avatar {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
@ -227,6 +232,16 @@ message-list {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.message.switch-user {
|
.message.switch-user {
|
||||||
|
.text {
|
||||||
|
max-width: 100%;
|
||||||
|
word-wrap: break-word;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
hyphens: auto;
|
||||||
|
img{
|
||||||
|
max-width: 90%;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
.avatar {
|
.avatar {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,34 @@ class MessageListElement extends HTMLElement {
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
timeAgo(date1, date2) {
|
||||||
|
const diffMs = Math.abs(date2 - date1); // Difference in milliseconds
|
||||||
|
|
||||||
|
const days = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
||||||
|
const hours = Math.floor((diffMs % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||||
|
const minutes = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60));
|
||||||
|
const seconds = Math.floor((diffMs % (1000 * 60)) / 1000);
|
||||||
|
if(days){
|
||||||
|
return `${days} days ago`
|
||||||
|
}
|
||||||
|
if(hours){
|
||||||
|
return `${hours} hours ago`
|
||||||
|
}
|
||||||
|
if (minutes)
|
||||||
|
return `${minutes} minutes ago`
|
||||||
|
|
||||||
|
return `just now`
|
||||||
|
}
|
||||||
|
timeDescription(isoDate){
|
||||||
|
if(!isoDate.endsWith("Z"))
|
||||||
|
isoDate += "Z"
|
||||||
|
const date = new Date(isoDate)
|
||||||
|
const hours = String(date.getHours()).padStart(2, "0");
|
||||||
|
const minutes = String(date.getMinutes()).padStart(2, "0");
|
||||||
|
let timeStr = `${hours}:${minutes}`
|
||||||
|
timeStr += ", " + this.timeAgo(new Date(isoDate), Date.now())
|
||||||
|
return timeStr
|
||||||
|
}
|
||||||
createElement(message){
|
createElement(message){
|
||||||
const element = document.createElement("div")
|
const element = document.createElement("div")
|
||||||
element.dataset.uid = message.uid
|
element.dataset.uid = message.uid
|
||||||
@ -58,8 +86,9 @@ class MessageListElement extends HTMLElement {
|
|||||||
text.innerHTML = message.html
|
text.innerHTML = message.html
|
||||||
const time = document.createElement("div")
|
const time = document.createElement("div")
|
||||||
time.classList.add("time")
|
time.classList.add("time")
|
||||||
time.textContent = message.created_at
|
time.dataset.created_at = message.created_at
|
||||||
messageContent.appendChild(author)
|
messageContent.appendChild(author)
|
||||||
|
time.textContent = this.timeDescription(message.created_at)
|
||||||
messageContent.appendChild(text)
|
messageContent.appendChild(text)
|
||||||
messageContent.appendChild(time)
|
messageContent.appendChild(time)
|
||||||
element.appendChild(avatar)
|
element.appendChild(avatar)
|
||||||
@ -119,6 +148,15 @@ class MessageListElement extends HTMLElement {
|
|||||||
})
|
})
|
||||||
this.dispatchEvent(new CustomEvent("rendered", {detail:this,bubbles:true}))
|
this.dispatchEvent(new CustomEvent("rendered", {detail:this,bubbles:true}))
|
||||||
|
|
||||||
|
this.timeUpdateInterval = setInterval(()=>{
|
||||||
|
me.messages.forEach((message)=>{
|
||||||
|
const newText = me.timeDescription(message.created_at)
|
||||||
|
|
||||||
|
if(newText != message.element.innerText){
|
||||||
|
message.element.querySelector(".time").innerText = newText
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},30000)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user