Parcourir la source

Fixes unhandled error from history.pushState

master
hristoterezov il y a 9 ans
Parent
révision
6e34e33b0d
1 fichiers modifiés avec 26 ajouts et 3 suppressions
  1. 26
    3
      app.js

+ 26
- 3
app.js Voir le fichier

@@ -24,6 +24,24 @@ import API from './modules/API/API';
24 24
 
25 25
 import UIEvents from './service/UI/UIEvents';
26 26
 
27
+/**
28
+ * Tries to push history state with the following parameters:
29
+ * 'VideoChat', `Room: ${roomName}`, URL. If fail, prints the error and returns
30
+ * it.
31
+ */
32
+function pushHistoryState(roomName, URL) {
33
+    try {
34
+        window.history.pushState(
35
+            'VideoChat', `Room: ${roomName}`, URL
36
+        );
37
+    } catch (e) {
38
+        console.warn("Push history state failed with parameters:",
39
+            'VideoChat', `Room: ${roomName}`, URL, e);
40
+        return e;
41
+    }
42
+    return null;
43
+}
44
+
27 45
 /**
28 46
  * Builds and returns the room name.
29 47
  */
@@ -33,9 +51,14 @@ function buildRoomName () {
33 51
     if(!roomName) {
34 52
         let word = RoomnameGenerator.generateRoomWithoutSeparator();
35 53
         roomName = word.toLowerCase();
36
-        window.history.pushState(
37
-            'VideoChat', `Room: ${word}`, window.location.pathname + word
38
-        );
54
+        let historyURL = window.location.pathname + word;
55
+        //Trying to push state with URL "/" + roomName
56
+        var err = pushHistoryState(word, historyURL);
57
+        //If URL "/" + roomName is not good, trying with explicitly adding the
58
+        //domain name.
59
+        if(err && config.hosts.domain) {
60
+            pushHistoryState(word, "//" + config.hosts.domain + historyURL);
61
+        }
39 62
     }
40 63
 
41 64
     return roomName;

Chargement…
Annuler
Enregistrer