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