<!DOCTYPE html>
<html>
  <body>
    <script
      src="https://code.jquery.com/jquery-3.6.1.slim.min.js"
      integrity="sha256-w8CvhFs7iHNVUtnSP0YKEg00p9Ih13rlL9zGqvLdePA="
      crossorigin="anonymous"
    ></script>
    <h1 id="roomName">
      Not Connected
    </h1>
    <div>
      <button id="hostBtn" disabled>Host</button>
      <input id="roomTxt" type="text">
      <button id="joinBtn" disabled>Join</button>
    </div>
    <textarea readonly></textarea>
    <div>
      <input id="chatTxt" type="text" disabled>
      <button id="chatBtn" disabled>Chat</button>
    </div>
    <script>
     const ws = new WebSocket("ws://localhost:8080");
     
     ws.addEventListener('open', e => {
       $("#hostBtn").attr('disabled', false);
       $("#joinBtn").attr('disabled', false);
     });

     $("#hostBtn").on('click', e => ws.send("HOST:"));
     $("#joinBtn").on('click', e => {
       const roomCode = $('#roomTxt').val();
       const msg = `JOIN: ${roomCode}`;
       ws.send(msg);
       $("#roomName").text(roomCode);
     });
     $("#chatBtn").on('click', e => {
       let text = $('#chatTxt').val();
       $('#chatTxt').val('');
       msg = `CHAT: ${text}`;
       ws.send(msg);
     });

     ws.addEventListener('message', e => {
       const msg = e.data;
       const pos = msg.indexOf(':');
       const command = msg.substring(0, pos);
       const args = msg.substring(pos+1).split(',');

       switch(command) {
	 case "ROOM_CODE":
	   $("#roomName").text(args[0]);
	   // Fallthrough
	 case "JOIN_OK":
	   $("#chatTxt").attr('disabled', false);
	   $("#chatBtn").attr('disabled', false);
	   break;
	 case "CHAT":
	   let text = $("textarea").val();
	   text = text += `${args[0]}\n`;
	   $("textarea").val(text);
	 default:
	   console.log("Unhandled message", msg);
       }
     });
    </script>
  </body>
</html>