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.any.js 1.5KB

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