in cloud-functions-start/public/scripts/main.js [257:295]
function createAndInsertMessage(id, timestamp) {
const container = document.createElement('div');
container.innerHTML = MESSAGE_TEMPLATE;
const div = container.firstChild;
div.setAttribute('id', id);
// If timestamp is null, assume we've gotten a brand new message.
// https://stackoverflow.com/a/47781432/4816918
timestamp = timestamp ? timestamp.toMillis() : Date.now();
div.setAttribute('timestamp', timestamp);
// figure out where to insert new message
const existingMessages = messageListElement.children;
if (existingMessages.length === 0) {
messageListElement.appendChild(div);
} else {
let messageListNode = existingMessages[0];
while (messageListNode) {
const messageListNodeTime = messageListNode.getAttribute('timestamp');
if (!messageListNodeTime) {
throw new Error(
`Child ${messageListNode.id} has no 'timestamp' attribute`
);
}
if (messageListNodeTime > timestamp) {
break;
}
messageListNode = messageListNode.nextSibling;
}
messageListElement.insertBefore(div, messageListNode);
}
return div;
}