1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // @ts-ignore
- import { jitsiLocalStorage } from '@jitsi/js-utils';
-
- import { IStore } from '../../app/types';
- import { isOnline } from '../net-info/selectors';
-
- // @ts-ignore
- import JitsiMeetJS from './_';
- import {
- LIB_DID_DISPOSE,
- LIB_DID_INIT,
- LIB_INIT_ERROR,
- LIB_WILL_DISPOSE,
- LIB_WILL_INIT
- } from './actionTypes';
- import { isAnalyticsEnabled } from './functions.any';
-
- /**
- * Disposes (of) lib-jitsi-meet.
- *
- * @returns {Function}
- */
- export function disposeLib() {
- return (dispatch: IStore['dispatch']) => {
- dispatch({ type: LIB_WILL_DISPOSE });
-
- // TODO Currently, lib-jitsi-meet doesn't have the functionality to
- // dispose itself.
- dispatch({ type: LIB_DID_DISPOSE });
- };
- }
-
- /**
- * Initializes lib-jitsi-meet (i.e. {@link invokes JitsiMeetJS.init()}) with the
- * current config(uration).
- *
- * @returns {Function}
- */
- export function initLib() {
- return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
- const state = getState();
- const config = state['features/base/config'];
-
- if (!config) {
- throw new Error('Cannot init lib-jitsi-meet without config');
- }
-
- dispatch({ type: LIB_WILL_INIT });
-
- try {
- JitsiMeetJS.init({
- enableAnalyticsLogging: isAnalyticsEnabled(getState),
- ...config,
- externalStorage: jitsiLocalStorage.isLocalStorageDisabled() ? jitsiLocalStorage : undefined
- });
- JitsiMeetJS.setNetworkInfo({
- isOnline: isOnline(state)
- });
- dispatch({ type: LIB_DID_INIT });
- } catch (error: any) {
- dispatch(libInitError(error));
- }
- };
- }
-
- /**
- * Notifies about a specific error raised by {@link JitsiMeetJS.init()}.
- *
- * @param {Error} error - The Error raised by JitsiMeetJS.init().
- * @returns {{
- * type: LIB_INIT_ERROR,
- * error: Error
- * }}
- */
- export function libInitError(error: Error) {
- return {
- type: LIB_INIT_ERROR,
- error
- };
- }
|