您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

actions.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* @flow */
  2. import type { Dispatch } from 'redux';
  3. import JitsiMeetJS from './_';
  4. import {
  5. LIB_DID_DISPOSE,
  6. LIB_DID_INIT,
  7. LIB_INIT_ERROR,
  8. LIB_WILL_DISPOSE,
  9. LIB_WILL_INIT
  10. } from './actionTypes';
  11. import { isAnalyticsEnabled } from './functions';
  12. declare var APP: Object;
  13. /**
  14. * Disposes (of) lib-jitsi-meet.
  15. *
  16. * @returns {Function}
  17. */
  18. export function disposeLib() {
  19. return (dispatch: Dispatch<any>) => {
  20. dispatch({ type: LIB_WILL_DISPOSE });
  21. // TODO Currently, lib-jitsi-meet doesn't have the functionality to
  22. // dispose itself.
  23. dispatch({ type: LIB_DID_DISPOSE });
  24. };
  25. }
  26. /**
  27. * Initializes lib-jitsi-meet (i.e. {@link invokes JitsiMeetJS.init()}) with the
  28. * current config(uration).
  29. *
  30. * @returns {Function}
  31. */
  32. export function initLib() {
  33. return (dispatch: Dispatch<any>, getState: Function): void => {
  34. const config = getState()['features/base/config'];
  35. if (!config) {
  36. throw new Error('Cannot init lib-jitsi-meet without config');
  37. }
  38. dispatch({ type: LIB_WILL_INIT });
  39. try {
  40. JitsiMeetJS.init({
  41. enableAnalyticsLogging: isAnalyticsEnabled(getState),
  42. ...config
  43. });
  44. dispatch({ type: LIB_DID_INIT });
  45. } catch (error) {
  46. dispatch(libInitError(error));
  47. }
  48. };
  49. }
  50. /**
  51. * Notifies about a specific error raised by {@link JitsiMeetJS.init()}.
  52. *
  53. * @param {Error} error - The Error raised by JitsiMeetJS.init().
  54. * @returns {{
  55. * type: LIB_INIT_ERROR,
  56. * error: Error
  57. * }}
  58. */
  59. export function libInitError(error: Error) {
  60. return {
  61. type: LIB_INIT_ERROR,
  62. error
  63. };
  64. }