90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
// @flow
|
|
|
|
import type { Dispatch } from 'redux';
|
|
|
|
import {
|
|
CONFIG_WILL_LOAD,
|
|
LOAD_CONFIG_ERROR,
|
|
SET_CONFIG
|
|
} from './actionTypes';
|
|
import { setConfigFromURLParams } from './functions';
|
|
|
|
/**
|
|
* Signals that the configuration for a specific locationURL will be loaded now.
|
|
*
|
|
* @param {string|URL} locationURL - The URL of the location which necessitated
|
|
* the loading of a configuration.
|
|
* @returns {{
|
|
* type: CONFIG_WILL_LOAD,
|
|
* locationURL
|
|
* }}
|
|
*/
|
|
export function configWillLoad(locationURL: string | URL) {
|
|
return {
|
|
type: CONFIG_WILL_LOAD,
|
|
locationURL
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Signals that a configuration could not be loaded due to a specific error.
|
|
*
|
|
* @param {Error} error - The {@code Error} which prevented the successful
|
|
* loading of a configuration.
|
|
* @param {string|URL} locationURL - The URL of the location which necessitated
|
|
* the loading of a configuration.
|
|
* @returns {{
|
|
* type: LOAD_CONFIG_ERROR,
|
|
* error: Error,
|
|
* locationURL
|
|
* }}
|
|
*/
|
|
export function loadConfigError(error: Error, locationURL: string | URL) {
|
|
return {
|
|
type: LOAD_CONFIG_ERROR,
|
|
error,
|
|
locationURL
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the configuration represented by the feature base/config. The
|
|
* configuration is defined and consumed by the library lib-jitsi-meet but some
|
|
* of its properties are consumed by the application jitsi-meet as well.
|
|
*
|
|
* @param {Object} config - The configuration to be represented by the feature
|
|
* base/config.
|
|
* @returns {Function}
|
|
*/
|
|
export function setConfig(config: Object = {}) {
|
|
return (dispatch: Dispatch<*>, getState: Function) => {
|
|
const { locationURL } = getState()['features/base/connection'];
|
|
|
|
// Now that the loading of the config was successful override the values
|
|
// with the parameters passed in the hash part of the location URI.
|
|
// TODO We're still in the middle ground between old Web with config,
|
|
// interfaceConfig, and loggingConfig used via global variables and new
|
|
// Web and mobile reading the respective values from the redux store.
|
|
// On React Native there's no interfaceConfig at all yet and
|
|
// loggingConfig is not loaded but there's a default value in the redux
|
|
// store.
|
|
// Only the config will be overridden on React Native, as the other
|
|
// globals will be undefined here. It's intentional - we do not care to
|
|
// override those configs yet.
|
|
locationURL
|
|
&& setConfigFromURLParams(
|
|
|
|
// On Web the config also comes from the window.config global,
|
|
// but it is resolved in the loadConfig procedure.
|
|
config,
|
|
window.interfaceConfig,
|
|
window.loggingConfig,
|
|
locationURL);
|
|
|
|
dispatch({
|
|
type: SET_CONFIG,
|
|
config
|
|
});
|
|
};
|
|
}
|