|
@@ -17,17 +17,20 @@
|
|
|
</div>
|
|
</div>
|
|
|
<% }); %>
|
|
<% }); %>
|
|
|
<% if (hasMoreMessages) { %>
|
|
<% if (hasMoreMessages) { %>
|
|
|
- <button id="load-more" class="button">Load More</button>
|
|
|
|
|
|
|
+ <form id="load-more" onsubmit="return onLoadMoreClick(event)">
|
|
|
|
|
+ <input type="submit" value="Load More" class="load-more" />
|
|
|
|
|
+ </form>
|
|
|
<% } %>
|
|
<% } %>
|
|
|
</div>
|
|
</div>
|
|
|
<form onsubmit="return onMessageSubmit(event)" class="input-form">
|
|
<form onsubmit="return onMessageSubmit(event)" class="input-form">
|
|
|
- <input type="text" id="message-input" name="text" placeholder="Enter message..." class="text-input" required />
|
|
|
|
|
|
|
+ <input type="text" id="message-input" name="text" placeholder="Enter message..." class="text-input" autocomplete="off" required />
|
|
|
<input type="submit" value="Send" class="button" />
|
|
<input type="submit" value="Send" class="button" />
|
|
|
</form>
|
|
</form>
|
|
|
</div>
|
|
</div>
|
|
|
<script>
|
|
<script>
|
|
|
var firstTimestamp = new Date("<%- firstTimestamp %>").toISOString();
|
|
var firstTimestamp = new Date("<%- firstTimestamp %>").toISOString();
|
|
|
var lastTimestamp = new Date().toISOString()
|
|
var lastTimestamp = new Date().toISOString()
|
|
|
|
|
+ var loadMoreForm = document.getElementById("load-more")
|
|
|
var messageList = document.getElementById("message-list")
|
|
var messageList = document.getElementById("message-list")
|
|
|
var messageInput = document.getElementById("message-input")
|
|
var messageInput = document.getElementById("message-input")
|
|
|
var timestamps = document.getElementsByClassName("message-datetime")
|
|
var timestamps = document.getElementsByClassName("message-datetime")
|
|
@@ -52,6 +55,7 @@
|
|
|
container.appendChild(datetimeSpan)
|
|
container.appendChild(datetimeSpan)
|
|
|
lastTimestamp = message.datetime
|
|
lastTimestamp = message.datetime
|
|
|
messageList.insertBefore(container, before)
|
|
messageList.insertBefore(container, before)
|
|
|
|
|
+ container.scrollIntoView(false);
|
|
|
}
|
|
}
|
|
|
function onMessageSubmit(event) {
|
|
function onMessageSubmit(event) {
|
|
|
event.preventDefault()
|
|
event.preventDefault()
|
|
@@ -86,7 +90,8 @@
|
|
|
}
|
|
}
|
|
|
xhr.send(JSON.stringify(data))
|
|
xhr.send(JSON.stringify(data))
|
|
|
}
|
|
}
|
|
|
- function loadMoreMessages() {
|
|
|
|
|
|
|
+ function onLoadMoreClick(event) {
|
|
|
|
|
+ event.preventDefault()
|
|
|
var data = { timestamp: firstTimestamp }
|
|
var data = { timestamp: firstTimestamp }
|
|
|
var xhr = new XMLHttpRequest()
|
|
var xhr = new XMLHttpRequest()
|
|
|
xhr.open("POST", "/chat/<%- title %>/messages")
|
|
xhr.open("POST", "/chat/<%- title %>/messages")
|
|
@@ -100,14 +105,14 @@
|
|
|
}
|
|
}
|
|
|
firstTimestamp = response.timestamp
|
|
firstTimestamp = response.timestamp
|
|
|
if (!response.hasMoreMessages) {
|
|
if (!response.hasMoreMessages) {
|
|
|
- document.getElementById("load-more").style.display = "none"
|
|
|
|
|
|
|
+ loadMoreForm.style.display = "none"
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- document.getElementById("load-more").style.display = "none"
|
|
|
|
|
|
|
+ loadMoreForm.style.display = "none"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
xhr.send(JSON.stringify(data))
|
|
xhr.send(JSON.stringify(data))
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
- document.getElementById("load-more")?.addEventListener("click", loadMoreMessages)
|
|
|
|
|
pollMessages()
|
|
pollMessages()
|
|
|
</script>
|
|
</script>
|