Handle JSON errors in a separate function
authorRaphaël Jakse <raphael.jakse@univ-grenoble-alpes.fr>
Sun, 5 Apr 2020 08:22:07 +0000 (10:22 +0200)
committerRaphaël Jakse <raphael.jakse@univ-grenoble-alpes.fr>
Sun, 5 Apr 2020 08:22:07 +0000 (10:22 +0200)
trivabble.js

index 20c91c147506a29f54e96755ccc4dac0931acd1b..d13187374d2063037b00b41ea3232779534f1255 100644 (file)
         );
     }
 
+    function jsonError(json, e) {
+        console.error("An error ocurred while parsing this JSON message:", json);
+        fatalError(e);
+    }
+
     function setRackCell(index, letter) {
         setTileParent(playerLetters[index], letter);
     }
         }
     }
 
+    function parseAndHandleReceivedData(r) {
+        try {
+            handleReceivedData(JSON.parse(r));
+        } catch (e) {
+            jsonError(r, e);
+        }
+    }
+
     function send(data) {
         if (!pollingReady && ((data.cmds && data.cmds.length) && data.cmds[0].cmd !== "joinGame")) {
             sendCmds();
 
             es.onmessage = function (e) {
                 pollingReady = true;
-                handleReceivedData(JSON.parse(e.data));
+                parseAndHandleReceivedData(e.data);
             };
 
             es.onerror = retryPolling;
                             currentIndex = end;
                             expectedLength = 0;
                         } catch (e) {
-                            console.error(
-                                xhr.responseText.substring(
-                                    currentIndex,
-                                    end
-                                )
-                            );
-
-                            fatalError(e);
+                            jsonError(xhr.responseText.substring(
+                                currentIndex,
+                                end
+                            ), e);
                         }
 
                         retriedImmediately = false;
                     return;
                 }
 
-                try {
-                    handleReceivedData(JSON.parse(xhr.responseText));
-                } catch (e) {
-                    fatalError(e);
-                }
+                parseAndHandleReceivedData(xhr.responseText);
 
                 blockMove--;