Skip to content

Instantly share code, notes, and snippets.

@artbakulev
Created March 11, 2021 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save artbakulev/92e8036694c1861f19576bdcd0414d1e to your computer and use it in GitHub Desktop.
Save artbakulev/92e8036694c1861f19576bdcd0414d1e to your computer and use it in GitHub Desktop.
<script type="application/javascript">
const root = document.getElementById("messages");
const messageTextInput = document.getElementById("message_text");
let can_send_message = true;
let messages = [];
const renderMessage = ({text, created}) => {
let message = document.createElement("div");
message.innerHTML = `
<div class="message__created">${created}</div>
<div class="message__text">${text}</div>
`
message.classList.add("message")
root.appendChild(message);
}
const renderMessages = () => {
root.innerHTML = "";
messages.forEach(message => renderMessage(message));
}
const listMessages = () => {
fetch("/api/messages.list")
.then(res => (res.json()))
.then(res => {
messages = res.messages;
renderMessages();
})
}
listMessages();
setInterval(listMessages, 3000);
const sendMessage = () => {
if (!can_send_message) return;
let text = messageTextInput.value;
can_send_message = false;
fetch("/api/messages.create", {
"method": "POST",
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
"body": JSON.stringify({
"text": text,
})
})
.then(res => (res.json()))
.then(res => {
return res;
})
.then(data => {
messages.unshift(data.message);
renderMessages();
can_send_message = true;
})
messageTextInput.value = "";
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment