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.

functions.js 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // @flow
  2. /**
  3. * Extracts the fqn part from a path, where fqn represents
  4. * tenant/roomName.
  5. *
  6. * @param {string} path - The URL path.
  7. * @returns {string}
  8. */
  9. export function extractFqnFromPath(path: string) {
  10. const parts = path.split('/');
  11. const len = parts.length;
  12. return parts.length > 2 ? `${parts[len - 2]}/${parts[len - 1]}` : '';
  13. }
  14. /**
  15. * Returns the url used for fetching dynamic branding.
  16. *
  17. * @param {Object} state - The state of the app.
  18. * @returns {string}
  19. */
  20. export function getDynamicBrandingUrl(state: Object) {
  21. const { dynamicBrandingUrl } = state['features/base/config'];
  22. if (dynamicBrandingUrl) {
  23. return dynamicBrandingUrl;
  24. }
  25. const baseUrl = state['features/base/config'].brandingDataUrl;
  26. const fqn = extractFqnFromPath(state['features/base/connection'].locationURL.pathname);
  27. if (baseUrl && fqn) {
  28. return `${baseUrl}?conferenceFqn=${encodeURIComponent(fqn)}`;
  29. }
  30. }
  31. /**
  32. * Selector used for getting the load state of the dynamic branding data.
  33. *
  34. * @param {Object} state - Global state of the app.
  35. * @returns {boolean}
  36. */
  37. export function isDynamicBrandingDataLoaded(state: Object) {
  38. return state['features/dynamic-branding'].customizationReady;
  39. }