You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

setup.web.js 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // @flow
  2. import { jitsiLocalStorage } from '@jitsi/js-utils/jitsi-local-storage';
  3. import { browser } from '../lib-jitsi-meet';
  4. import { parseURLParams } from '../util/parseURLParams';
  5. import logger from './logger';
  6. declare var APP: Object;
  7. /**
  8. * Handles changes of the fake local storage.
  9. *
  10. * @returns {void}
  11. */
  12. function onFakeLocalStorageChanged() {
  13. APP.API.notifyLocalStorageChanged(jitsiLocalStorage.serialize());
  14. }
  15. /**
  16. * Performs initial setup of the jitsiLocalStorage.
  17. *
  18. * @returns {void}
  19. */
  20. function setupJitsiLocalStorage() {
  21. if (jitsiLocalStorage.isLocalStorageDisabled() || browser.isSafari()) {
  22. const urlParams = parseURLParams(window.location);
  23. try {
  24. const localStorageContent = JSON.parse(urlParams['appData.localStorageContent']);
  25. if (typeof localStorageContent === 'object') {
  26. Object.keys(localStorageContent).forEach(key => {
  27. jitsiLocalStorage.setItem(key, localStorageContent[key]);
  28. });
  29. }
  30. } catch (error) {
  31. logger.error('Can\'t parse localStorageContent.', error);
  32. }
  33. jitsiLocalStorage.on('changed', onFakeLocalStorageChanged);
  34. }
  35. }
  36. setupJitsiLocalStorage();