Update.
This commit is contained in:
		
							parent
							
								
									bca39a612c
								
							
						
					
					
						commit
						5b88350ff2
					
				| @ -209,11 +209,16 @@ message-list { | ||||
| } | ||||
| 
 | ||||
| .message { | ||||
|   .text { | ||||
|   max-width: 100%; | ||||
|   word-wrap: break-word; | ||||
|   overflow-wrap: break-word; | ||||
|   hyphens: auto; | ||||
| 
 | ||||
|     img { | ||||
|       max-width: 90%; | ||||
|       border-radius: 20px; | ||||
|     } | ||||
|   } | ||||
|   .avatar { | ||||
|       opacity: 0; | ||||
|   } | ||||
| @ -227,6 +232,16 @@ message-list { | ||||
|   } | ||||
| } | ||||
| .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 { | ||||
|       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){ | ||||
|         const element = document.createElement("div") | ||||
|         element.dataset.uid = message.uid | ||||
| @ -58,8 +86,9 @@ class MessageListElement extends HTMLElement { | ||||
|             text.innerHTML = message.html | ||||
|         const time = document.createElement("div") | ||||
|         time.classList.add("time") | ||||
|         time.textContent = message.created_at | ||||
|         time.dataset.created_at = message.created_at | ||||
|         messageContent.appendChild(author) | ||||
|         time.textContent = this.timeDescription(message.created_at) | ||||
|         messageContent.appendChild(text) | ||||
|         messageContent.appendChild(time) | ||||
|         element.appendChild(avatar) | ||||
| @ -119,6 +148,15 @@ class MessageListElement extends HTMLElement { | ||||
|         }) | ||||
|         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