1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { openDialog } from '../../features/base/dialog';
-
- import {
- UPDATE_DIAL_IN_NUMBERS_FAILED,
- UPDATE_DIAL_IN_NUMBERS_SUCCESS
- } from './actionTypes';
- import { InviteDialog } from './components';
-
- declare var $: Function;
- declare var APP: Object;
- declare var config: Object;
-
- /**
- * The url for the api that matches a conference name and muc to an id.
- *
- * @type {string}
- */
- const DIAL_IN_CONF_CODE_URL = config.dialInConfCodeUrl;
-
- /**
- * The url for the api that returns phone numbers to dial in to the conference
- * and join using the conference id.
- *
- * @type {string}
- */
- const DIAL_IN_NUMBERS_URLS = config.dialInNumbersUrl;
-
- /**
- * The url for the MUC component joined for the conference.
- *
- * @type {string}
- */
- const MUC_URL = config.hosts && config.hosts.muc;
-
- /**
- * Opens the Invite Dialog.
- *
- * @returns {Function}
- */
- export function openInviteDialog() {
- return openDialog(InviteDialog, {
- conferenceUrl: encodeURI(APP.ConferenceUrl.getInviteUrl())
- });
- }
-
- /**
- * Sends an ajax requests for dial-in numbers and conference id.
- *
- * @returns {Function}
- */
- export function updateDialInNumbers() {
- return (dispatch, getState) => {
-
- if (!DIAL_IN_CONF_CODE_URL || !DIAL_IN_NUMBERS_URLS || !MUC_URL) {
- dispatch({
- type: UPDATE_DIAL_IN_NUMBERS_FAILED,
- error: 'URLs for fetching dial in numbers not properly defined'
- });
-
- return;
- }
-
- const { room } = getState()['features/base/conference'];
- const conferenceIdUrl
- = `${DIAL_IN_CONF_CODE_URL}?conference=${room}@${MUC_URL}`;
-
- Promise.all([
- $.getJSON(DIAL_IN_NUMBERS_URLS),
- $.getJSON(conferenceIdUrl)
- ]).then(([ numbersResponse, idResponse ]) => {
- if (!idResponse.conference || !idResponse.id) {
- return Promise.reject(idResponse.message);
- }
-
- dispatch({
- type: UPDATE_DIAL_IN_NUMBERS_SUCCESS,
- conferenceId: idResponse,
- dialInNumbers: numbersResponse
- });
- })
- .catch(error => {
- dispatch({
- type: UPDATE_DIAL_IN_NUMBERS_FAILED,
- error
- });
- });
-
- };
- }
|