<html>
    <head>
        <meta charset="utf-8" />
        <title>Chat</title>
        <script>
            function onLoad() {
                console.log("BOOTING");
                const socket = new WebSocket("ws://localhost:8080/ws");
                const input = document.getElementById("chat-input");
                const logs = document.getElementById("chat-logs");

                if (!input || !logs) {
                    alert("Couldn't find required elements");
                    console.err("Couldn't find required elements");
                    return;
                }

                input.addEventListener(
                    "keyup",
                    (event) => {
                        if (event.isComposing) {
                            return;
                        }
                        if (event.key != "Enter") {
                            return;
                        }

                        socket.send(input.value);
                        input.value = "";
                    },
                    false
                );

                socket.onmessage = (event) => {
                    const newNode = document.createElement("li");
                    newNode.textContent = event.data;

                    let firstChild = null;
                    for (const n of logs.childNodes.values()) {
                        if (n.nodeType == 1) {
                            firstChild = n;
                            break;
                        }
                    }

                    if (firstChild) {
                        logs.insertBefore(newNode, firstChild);
                    } else {
                        logs.appendChild(newNode);
                    }
                };

                window.addEventListener("beforeunload", () => {
                    socket.close();
                });
            }

            if (document.readyState === "complete") {
                onLoad();
            } else {
                document.addEventListener("DOMContentLoaded", onLoad, false);
            }
        </script>
    </head>
    <body>
        <input id="chat-input" type="test" />
        <ul id="chat-logs"></ul>
    </body>
</html>