| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | /* @flow */
import type { Dispatch } from 'redux';
import {
    libInitError,
    WEBRTC_NOT_READY,
    WEBRTC_NOT_SUPPORTED
} from '../lib-jitsi-meet';
declare var APP: Object;
declare var config: Object;
const logger = require('jitsi-meet-logger').getLogger(__filename);
export {
    connectionEstablished,
    connectionFailed,
    setLocationURL
} from './actions.native';
/**
 * Opens new connection.
 *
 * @returns {Promise<JitsiConnection>}
 */
export function connect() {
    return (dispatch: Dispatch<*>, getState: Function) => {
        const state = getState();
        // XXX Lib-jitsi-meet does not accept uppercase letters.
        const room = state['features/base/conference'].room.toLowerCase();
        // XXX For web based version we use conference initialization logic
        // from the old app (at the moment of writing).
        return APP.conference.init({ roomName: room })
            .catch(error => {
                APP.API.notifyConferenceLeft(APP.conference.roomName);
                logger.error(error);
                // TODO The following are in fact Errors raised by
                // JitsiMeetJS.init() which should be taken care of in
                // features/base/lib-jitsi-meet but we are not there yet on the
                // Web at the time of this writing.
                switch (error.name) {
                case WEBRTC_NOT_READY:
                case WEBRTC_NOT_SUPPORTED:
                    dispatch(libInitError(error));
                }
            });
    };
}
/**
 * Closes connection.
 *
 * @returns {Function}
 */
export function disconnect() {
    // XXX For web based version we use conference hanging up logic from the old
    // app.
    return () => APP.conference.hangup();
}
 |