]> git.cworth.org Git - zombocom-ai/blobdiff - index.html
Fix name tracking to be persistent
[zombocom-ai] / index.html
index 6bdd28b134138d24eb8568a49a4dfb328829c79f..c556792845e29f6cb668de5c176320516ba3180c 100644 (file)
@@ -64,7 +64,7 @@
             <label for="code">
               Numeric code:
             </label>
-            <input id="code" type="text" autocomplete="off" placeholder="(Leave blank for random)" />
+            <input id="code" type="number" min="0" max="4294967295" autocomplete="off" placeholder="(Leave blank for random)" />
           </div>
         </div>
 
@@ -74,7 +74,7 @@
       </form>
     </p>
 
-    <div id="images" style="display: none">
+    <div id="images">
     </div>
 
     <audio loop="" src="/zombo_words.mp3" type="audio/mpeg"></audio>
@@ -112,6 +112,7 @@ mute.addEventListener("click", () => {
 
     const name_input = document.querySelector("#name");
     const name_dialog = document.querySelector("#name-dialog");
+    var informed_name;
     const images = document.querySelector("#images");
     const zombo_form = document.querySelector("#zombo-form");
     const prompt = document.querySelector("#prompt");
@@ -141,7 +142,16 @@ mute.addEventListener("click", () => {
 
     socket.on('inform-name', (name) => {
         console.log("Received inform-name event: " + name);
+
+        /* When we receive a name we store it in 3 places:
+         *
+         *   * The informed_name variable (confirming what the server knows)
+         *   * The name_input field (so the user will see that in their profile)
+         *   * In localStorage (for use in a future session)
+         */
+        informed_name = name;
         name_input.value = name;
+        localStorage.setItem('name', name);
     });
 
     socket.on('reset', () => {
@@ -185,11 +195,18 @@ mute.addEventListener("click", () => {
         figure.appendChild(comment_form);
 
         comment_input.addEventListener('focus', () => {
-            /* Do nothing if name is already set. */
-            if (name_input.value)
+            /* If the server has informed us it has our name, we are done. */
+            if (informed_name)
+                return;
+
+            /* If server has no name, check local storage. */
+            const name = localStorage.getItem('name');
+            if (name) {
+                socket.emit('set-name', name);
                 return;
+            }
 
-            /* Otherwise, bring up the modal dialog to set the name. */
+            /* Failing both, bring up the modal dialog to set the name. */
             name_dialog.showModal();
         });
 
@@ -224,8 +241,6 @@ mute.addEventListener("click", () => {
         /* Re-display the form and hide spinner now that generation is over. */
         clearTimeout(spinner_timeout);
         hide_spinner();
-        /* Also display all of the images. */
-        images.style.display = "block";
     });
 
     function random_from(items) {