diff --git a/app.js b/app.js index 523e55781..6778fd109 100644 --- a/app.js +++ b/app.js @@ -24,6 +24,24 @@ import API from './modules/API/API'; import UIEvents from './service/UI/UIEvents'; +/** + * Tries to push history state with the following parameters: + * 'VideoChat', `Room: ${roomName}`, URL. If fail, prints the error and returns + * it. + */ +function pushHistoryState(roomName, URL) { + try { + window.history.pushState( + 'VideoChat', `Room: ${roomName}`, URL + ); + } catch (e) { + console.warn("Push history state failed with parameters:", + 'VideoChat', `Room: ${roomName}`, URL, e); + return e; + } + return null; +} + /** * Builds and returns the room name. */ @@ -33,9 +51,14 @@ function buildRoomName () { if(!roomName) { let word = RoomnameGenerator.generateRoomWithoutSeparator(); roomName = word.toLowerCase(); - window.history.pushState( - 'VideoChat', `Room: ${word}`, window.location.pathname + word - ); + let historyURL = window.location.pathname + word; + //Trying to push state with URL "/" + roomName + var err = pushHistoryState(word, historyURL); + //If URL "/" + roomName is not good, trying with explicitly adding the + //domain name. + if(err && config.hosts.domain) { + pushHistoryState(word, "//" + config.hosts.domain + historyURL); + } } return roomName;