From 33e4324f6de7b4360182d39669b8095bd0dff43a Mon Sep 17 00:00:00 2001 From: Vlad Piersec Date: Fri, 11 Dec 2020 12:16:58 +0200 Subject: [PATCH] fix(branding): Use config url for dynamic branding --- config.js | 2 +- react/features/dynamic-branding/actions.js | 10 +++++----- react/features/dynamic-branding/functions.js | 21 ++++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/config.js b/config.js index 1865e2c53..9f8c20cde 100644 --- a/config.js +++ b/config.js @@ -616,7 +616,7 @@ var config = { logoImageUrl: 'https://example.com/logo-img.png' } */ - // brandingDataUrl: '', + // dynamicBrandingUrl: '', // The URL of the moderated rooms microservice, if available. If it // is present, a link to the service will be rendered on the welcome page, diff --git a/react/features/dynamic-branding/actions.js b/react/features/dynamic-branding/actions.js index 8db5aedc7..e7a3297d4 100644 --- a/react/features/dynamic-branding/actions.js +++ b/react/features/dynamic-branding/actions.js @@ -9,10 +9,11 @@ import { SET_DYNAMIC_BRANDING_FAILED, SET_DYNAMIC_BRANDING_READY } from './actionTypes'; -import { extractFqnFromPath } from './functions'; +import { getDynamicBrandingUrl } from './functions'; const logger = getLogger(__filename); + /** * Fetches custom branding data. * If there is no data or the request fails, sets the `customizationReady` flag @@ -23,15 +24,14 @@ const logger = getLogger(__filename); 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); + const url = getDynamicBrandingUrl(state); - if (baseUrl && fqn) { + if (url) { try { - const res = await doGetJSON(`${baseUrl}?conferenceFqn=${encodeURIComponent(fqn)}`); + const res = await doGetJSON(url); return dispatch(setDynamicBrandingData(res)); } catch (err) { diff --git a/react/features/dynamic-branding/functions.js b/react/features/dynamic-branding/functions.js index 951635dc2..2d3b6ddbb 100644 --- a/react/features/dynamic-branding/functions.js +++ b/react/features/dynamic-branding/functions.js @@ -13,3 +13,24 @@ export function extractFqnFromPath(path: string) { return parts.length > 2 ? `${parts[len - 2]}/${parts[len - 1]}` : ''; } + +/** + * Returns the url used for fetching dynamic branding. + * + * @param {Object} state - The state of the app. + * @returns {string} + */ +export function getDynamicBrandingUrl(state: Object) { + const { dynamicBrandingUrl } = state['features/base/config']; + + if (dynamicBrandingUrl) { + return dynamicBrandingUrl; + } + + const baseUrl = state['features/base/config'].brandingDataUrl; + const fqn = extractFqnFromPath(state['features/base/connection'].locationURL.pathname); + + if (baseUrl && fqn) { + return `${baseUrl}?conferenceFqn=${encodeURIComponent(fqn)}`; + } +}