66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
|
// @flow
|
||
|
|
||
|
import { getLogger } from 'jitsi-meet-logger';
|
||
|
|
||
|
import { doGetJSON } from '../base/util';
|
||
|
|
||
|
import { SET_DYNAMIC_BRANDING_DATA, SET_DYNAMIC_BRANDING_READY } from './actionTypes';
|
||
|
import { extractFqnFromPath } from './functions';
|
||
|
|
||
|
const logger = getLogger(__filename);
|
||
|
|
||
|
/**
|
||
|
* Fetches custom branding data.
|
||
|
* If there is no data or the request fails, sets the `customizationReady` flag
|
||
|
* so the defaults can be displayed.
|
||
|
*
|
||
|
* @returns {Function}
|
||
|
*/
|
||
|
export function fetchCustomBrandingData() {
|
||
|
return async function(dispatch: Function, getState: Function) {
|
||
|
const state = getState();
|
||
|
const baseUrl = state['features/base/config'].brandingDataUrl;
|
||
|
const { customizationReady } = state['features/dynamic-branding'];
|
||
|
|
||
|
if (!customizationReady) {
|
||
|
const fqn = extractFqnFromPath(state['features/base/connection'].locationURL.pathname);
|
||
|
|
||
|
if (baseUrl && fqn) {
|
||
|
try {
|
||
|
const res = await doGetJSON(`${baseUrl}?conferenceFqn=${encodeURIComponent(fqn)}`);
|
||
|
|
||
|
return dispatch(setDynamicBrandingData(res));
|
||
|
} catch (err) {
|
||
|
logger.error('Error fetching branding data', err);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dispatch(setDynamicBrandingReady());
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Action used to set the user customizations.
|
||
|
*
|
||
|
* @param {Object} value - The custom data to be set.
|
||
|
* @returns {Object}
|
||
|
*/
|
||
|
function setDynamicBrandingData(value) {
|
||
|
return {
|
||
|
type: SET_DYNAMIC_BRANDING_DATA,
|
||
|
value
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Action used to signal the branding elements are ready to be displayed.
|
||
|
*
|
||
|
* @returns {Object}
|
||
|
*/
|
||
|
function setDynamicBrandingReady() {
|
||
|
return {
|
||
|
type: SET_DYNAMIC_BRANDING_READY
|
||
|
};
|
||
|
}
|