diff --git a/app/package.json b/app/package.json index c61504f..0eed6e9 100644 --- a/app/package.json +++ b/app/package.json @@ -13,7 +13,6 @@ "domready": "^1.0.8", "file-saver": "^2.0.1", "hark": "^1.2.3", - "js-cookie": "^2.2.0", "marked": "^0.6.1", "mediasoup-client": "^3.0.6", "notistack": "^0.5.1", @@ -22,20 +21,16 @@ "react": "^16.8.5", "react-cookie-consent": "^2.2.2", "react-dom": "^16.8.5", - "react-draggable": "^3.2.1", "react-redux": "^6.0.1", "react-scripts": "2.1.8", - "react-tooltip": "^3.10.0", "redux": "^4.0.1", "redux-logger": "^3.0.6", "redux-persist": "^5.10.0", "redux-thunk": "^2.3.0", "reselect": "^4.0.0", - "resize-observer-polyfill": "^1.5.1", "riek": "^1.1.0", "socket.io-client": "^2.2.0", "source-map-explorer": "^1.8.0", - "url-parse": "^1.4.4", "webtorrent": "^0.103.1" }, "scripts": { diff --git a/app/src/index.js b/app/src/index.js index b4455d5..8e30c9d 100644 --- a/app/src/index.js +++ b/app/src/index.js @@ -1,5 +1,4 @@ import domready from 'domready'; -import UrlParse from 'url-parse'; import React from 'react'; import { render } from 'react-dom'; import { Provider } from 'react-redux'; @@ -45,41 +44,30 @@ function run() logger.debug('run() [environment:%s]', process.env.NODE_ENV); const peerId = randomString({ length: 8 }).toLowerCase(); - const urlParser = new UrlParse(window.location.href, true); + const urlParser = new URL(window.location); + const parameters = urlParser.searchParams; - let roomId = (urlParser.pathname).substr(1) - ? (urlParser.pathname).substr(1).toLowerCase() : urlParser.query.roomId.toLowerCase(); - const produce = urlParser.query.produce !== 'false'; - const consume = urlParser.query.consume !== 'false'; - const useSimulcast = urlParser.query.simulcast === 'true'; - const forceTcp = urlParser.query.forceTcp === 'true'; + let roomId = (urlParser.pathname).substr(1); if (!roomId) + roomId = parameters.get('roomId'); + + if (roomId) + roomId = roomId.toLowerCase(); + else { roomId = randomString({ length: 8 }).toLowerCase(); - urlParser.query.roomId = roomId; + parameters.set('roomId', roomId); window.history.pushState('', '', urlParser.toString()); } - // Get the effective/shareable Room URL. - const roomUrlParser = new UrlParse(window.location.href, true); + const produce = parameters.get('produce') !== 'false'; + const consume = parameters.get('consume') !== 'false'; + const useSimulcast = parameters.get('simulcast') === 'true'; + const forceTcp = parameters.get('forceTcp') === 'true'; - for (const key of Object.keys(roomUrlParser.query)) - { - // Don't keep some custom params. - switch (key) - { - case 'roomId': - case 'simulcast': - break; - default: - delete roomUrlParser.query[key]; - } - } - delete roomUrlParser.hash; - - const roomUrl = roomUrlParser.toString(); + const roomUrl = window.location.href.split('?')[0]; // Get current device. const device = deviceInfo(); diff --git a/app/src/reducers/peers.js b/app/src/reducers/peers.js index b5a3270..ddd104f 100644 --- a/app/src/reducers/peers.js +++ b/app/src/reducers/peers.js @@ -1,5 +1,3 @@ -import omit from 'lodash/omit'; - const peer = (state = {}, action) => { switch (action.type) @@ -58,7 +56,12 @@ const peers = (state = {}, action) => case 'REMOVE_PEER': { - return omit(state, [ action.payload.peerId ]); + const { peerId } = action.payload; + const newState = { ...state }; + + delete newState[peerId]; + + return newState; } case 'SET_PEER_DISPLAY_NAME':