2020-09-25 22:51:54 +00:00
|
|
|
// @flow
|
|
|
|
|
|
|
|
import { jitsiLocalStorage } from '@jitsi/js-utils/jitsi-local-storage';
|
|
|
|
|
2021-01-15 12:44:24 +00:00
|
|
|
import { browser } from '../lib-jitsi-meet';
|
2020-09-25 22:51:54 +00:00
|
|
|
import { parseURLParams } from '../util/parseURLParams';
|
|
|
|
|
|
|
|
import logger from './logger';
|
|
|
|
|
|
|
|
declare var APP: Object;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handles changes of the fake local storage.
|
|
|
|
*
|
|
|
|
* @returns {void}
|
|
|
|
*/
|
|
|
|
function onFakeLocalStorageChanged() {
|
|
|
|
APP.API.notifyLocalStorageChanged(jitsiLocalStorage.serialize());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Performs initial setup of the jitsiLocalStorage.
|
|
|
|
*
|
|
|
|
* @returns {void}
|
|
|
|
*/
|
|
|
|
function setupJitsiLocalStorage() {
|
2021-01-15 12:44:24 +00:00
|
|
|
if (jitsiLocalStorage.isLocalStorageDisabled() || browser.isSafari()) {
|
2020-09-25 22:51:54 +00:00
|
|
|
const urlParams = parseURLParams(window.location);
|
|
|
|
|
|
|
|
try {
|
|
|
|
const localStorageContent = JSON.parse(urlParams['appData.localStorageContent']);
|
|
|
|
|
|
|
|
if (typeof localStorageContent === 'object') {
|
|
|
|
Object.keys(localStorageContent).forEach(key => {
|
|
|
|
jitsiLocalStorage.setItem(key, localStorageContent[key]);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
logger.error('Can\'t parse localStorageContent.', error);
|
|
|
|
}
|
|
|
|
|
|
|
|
jitsiLocalStorage.on('changed', onFakeLocalStorageChanged);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setupJitsiLocalStorage();
|