| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | 
							- import JitsiMeetJS from '../lib-jitsi-meet';
 - import {
 -     changeParticipantEmail,
 -     dominantSpeakerChanged,
 -     participantJoined,
 -     participantLeft,
 -     participantRoleChanged
 - } from '../participants';
 - import {
 -     trackAdded,
 -     trackRemoved
 - } from '../tracks';
 - 
 - import {
 -     CONFERENCE_JOINED,
 -     CONFERENCE_LEFT,
 -     CONFERENCE_WILL_LEAVE,
 -     SET_ROOM
 - } from './actionTypes';
 - import { EMAIL_COMMAND } from './constants';
 - import { _addLocalTracksToConference } from './functions';
 - import './middleware';
 - import './reducer';
 - 
 - const JitsiConferenceEvents = JitsiMeetJS.events.conference;
 - 
 - /**
 -  * Initializes a new conference.
 -  *
 -  * @returns {Function}
 -  */
 - export function createConference() {
 -     return (dispatch, getState) => {
 -         const state = getState();
 -         const connection = state['features/base/connection'].jitsiConnection;
 -         const room = state['features/base/conference'].room;
 - 
 -         if (!connection) {
 -             throw new Error('Cannot create conference without connection');
 -         }
 -         if (typeof room === 'undefined' || room === '') {
 -             throw new Error('Cannot join conference without room name');
 -         }
 - 
 -         // TODO Take options from config.
 -         const conference
 -             = connection.initJitsiConference(room, { openSctp: true });
 - 
 -         dispatch(_setupConferenceListeners(conference));
 - 
 -         conference.join();
 -     };
 - }
 - 
 - /**
 -  * Attach any pre-existing local media to the conference once the conference has
 -  * been joined.
 -  *
 -  * @param {JitsiConference} conference - The JitsiConference instance which was
 -  * joined by the local participant.
 -  * @returns {Function}
 -  */
 - export function conferenceJoined(conference) {
 -     return (dispatch, getState) => {
 -         const localTracks = getState()['features/base/tracks']
 -             .filter(t => t.local)
 -             .map(t => t.jitsiTrack);
 - 
 -         if (localTracks.length) {
 -             _addLocalTracksToConference(conference, localTracks);
 -         }
 - 
 -         dispatch({
 -             type: CONFERENCE_JOINED,
 -             conference: {
 -                 jitsiConference: conference
 -             }
 -         });
 -     };
 - }
 - 
 - /**
 -  * Signal that we have left the conference.
 -  *
 -  * @param {JitsiConference} conference - The JitsiConference instance which was
 -  * left by the local participant.
 -  * @returns {{
 -  *      type: CONFERENCE_LEFT,
 -  *      conference: {
 -  *          jitsiConference: JitsiConference
 -  *      }
 -  *  }}
 -  */
 - export function conferenceLeft(conference) {
 -     return {
 -         type: CONFERENCE_LEFT,
 -         conference: {
 -             jitsiConference: conference
 -         }
 -     };
 - }
 - 
 - /**
 -  * Signal the intention of the application to have the local participant leave a
 -  * specific conference. Similar in fashion to CONFERENCE_LEFT. Contrary to it
 -  * though, it's not guaranteed because CONFERENCE_LEFT may be triggered by
 -  * lib-jitsi-meet and not the application.
 -  *
 -  * @param {JitsiConference} conference - The JitsiConference instance which will
 -  * be left by the local participant.
 -  * @returns {{
 -  *      type: CONFERENCE_LEFT,
 -  *      conference: {
 -  *          jitsiConference: JitsiConference
 -  *      }
 -  *  }}
 -  */
 - export function conferenceWillLeave(conference) {
 -     return {
 -         type: CONFERENCE_WILL_LEAVE,
 -         conference: {
 -             jitsiConference: conference
 -         }
 -     };
 - }
 - 
 - /**
 -  * Sets (the name of) the room of the conference to be joined.
 -  *
 -  * @param {(string|undefined)} room - The name of the room of the conference to
 -  * be joined.
 -  * @returns {{
 -  *      type: SET_ROOM,
 -  *      room: string
 -  *  }}
 -  */
 - export function setRoom(room) {
 -     return {
 -         type: SET_ROOM,
 -         room
 -     };
 - }
 - 
 - /**
 -  * Setup various conference event handlers.
 -  *
 -  * @param {JitsiConference} conference - Conference instance.
 -  * @private
 -  * @returns {Function}
 -  */
 - function _setupConferenceListeners(conference) {
 -     return dispatch => {
 -         conference.on(
 -             JitsiConferenceEvents.CONFERENCE_JOINED,
 -             () => dispatch(conferenceJoined(conference)));
 -         conference.on(
 -             JitsiConferenceEvents.CONFERENCE_LEFT,
 -             () => dispatch(conferenceLeft(conference)));
 - 
 -         conference.on(
 -             JitsiConferenceEvents.DOMINANT_SPEAKER_CHANGED,
 -             id => dispatch(dominantSpeakerChanged(id)));
 - 
 -         conference.on(
 -             JitsiConferenceEvents.TRACK_ADDED,
 -             track =>
 -                 track && !track.isLocal() && dispatch(trackAdded(track)));
 -         conference.on(
 -             JitsiConferenceEvents.TRACK_REMOVED,
 -             track =>
 -                 track && !track.isLocal() && dispatch(trackRemoved(track)));
 - 
 -         conference.on(
 -             JitsiConferenceEvents.USER_JOINED,
 -             (id, user) => dispatch(participantJoined({
 -                 id,
 -                 name: user.getDisplayName(),
 -                 role: user.getRole()
 -             })));
 -         conference.on(
 -             JitsiConferenceEvents.USER_LEFT,
 -             id => dispatch(participantLeft(id)));
 -         conference.on(
 -             JitsiConferenceEvents.USER_ROLE_CHANGED,
 -             (id, role) => dispatch(participantRoleChanged(id, role)));
 - 
 -         conference.addCommandListener(
 -             EMAIL_COMMAND,
 -             (data, id) => dispatch(changeParticipantEmail(id, data.value)));
 -     };
 - }
 
 
  |