123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /* @flow */
-
- import type { Dispatch } from 'redux';
-
- import { JitsiConferenceEvents } from '../lib-jitsi-meet';
-
- import UIEvents from '../../../../service/UI/UIEvents';
-
- import { SET_DOMAIN } from './actionTypes';
-
- import { appNavigate } from '../../app';
-
- declare var APP: Object;
-
- const logger = require('jitsi-meet-logger').getLogger(__filename);
-
- export {
- connectionEstablished,
- connectionFailed
- } from './actions.native.js';
-
- /**
- * 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 }).then(() => {
- // If during the conference initialization was defined that browser
- // doesn't support WebRTC then we should define which route
- // to render.
- if (APP.unsupportedBrowser) {
- dispatch(appNavigate(room));
- }
-
- if (APP.logCollector) {
- // Start the LogCollector's periodic "store logs" task
- APP.logCollector.start();
- APP.logCollectorStarted = true;
-
- // Make an attempt to flush in case a lot of logs have been
- // cached, before the collector was started.
- APP.logCollector.flush();
-
- // This event listener will flush the logs, before
- // the statistics module (CallStats) is stopped.
- //
- // NOTE The LogCollector is not stopped, because this event can
- // be triggered multiple times during single conference
- // (whenever statistics module is stopped). That includes
- // the case when Jicofo terminates the single person left in the
- // room. It will then restart the media session when someone
- // eventually join the room which will start the stats again.
- APP.conference.addConferenceListener(
- JitsiConferenceEvents.BEFORE_STATISTICS_DISPOSED,
- () => {
- if (APP.logCollector) {
- APP.logCollector.flush();
- }
- }
- );
- }
-
- APP.UI.initConference();
-
- APP.UI.addListener(UIEvents.LANG_CHANGED, language => {
- APP.translation.setLanguage(language);
- APP.settings.setLanguage(language);
- });
-
- APP.keyboardshortcut.init();
- })
- .catch(err => {
- APP.UI.hideRingOverLay();
- APP.API.notifyConferenceLeft(APP.conference.roomName);
- logger.error(err);
- });
- };
- }
-
- /**
- * 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();
- }
-
- /**
- * Sets connection domain.
- *
- * @param {string} domain - Domain name.
- * @returns {{
- * type: SET_DOMAIN,
- * domain: string
- * }}
- */
- export function setDomain(domain: string) {
- return {
- type: SET_DOMAIN,
- domain
- };
- }
|