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

PrejoinApp.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // @flow
  2. import { AtlasKitThemeProvider } from '@atlaskit/theme';
  3. import React from 'react';
  4. import { batch } from 'react-redux';
  5. import BaseApp from '../../../base/app/components/BaseApp';
  6. import { getConferenceOptions } from '../../../base/conference/functions';
  7. import { setConfig } from '../../../base/config/actions';
  8. import { createPrejoinTracks } from '../../../base/tracks/functions.web';
  9. import GlobalStyles from '../../../base/ui/components/GlobalStyles.web';
  10. import JitsiThemeProvider from '../../../base/ui/components/JitsiThemeProvider.web';
  11. import DialogContainer from '../../../base/ui/components/web/DialogContainer';
  12. import { initPrejoin, makePrecallTest } from '../../actions';
  13. import PrejoinThirdParty from './PrejoinThirdParty';
  14. type Props = {
  15. /**
  16. * Indicates the style type that needs to be applied.
  17. */
  18. styleType: string
  19. }
  20. /**
  21. * Wrapper application for prejoin.
  22. *
  23. * @augments BaseApp
  24. */
  25. export default class PrejoinApp extends BaseApp<Props> {
  26. /**
  27. * The deferred for the initialisation {{promise, resolve, reject}}.
  28. */
  29. _init: Object;
  30. /**
  31. * Navigates to {@link Prejoin} upon mount.
  32. *
  33. * @returns {void}
  34. */
  35. async componentDidMount() {
  36. await super.componentDidMount();
  37. const { store } = this.state;
  38. const { dispatch } = store;
  39. const { styleType } = this.props;
  40. super._navigate({
  41. component: PrejoinThirdParty,
  42. props: {
  43. className: styleType
  44. }
  45. });
  46. const { startWithAudioMuted, startWithVideoMuted } = store.getState()['features/base/settings'];
  47. dispatch(setConfig({
  48. prejoinConfig: {
  49. enabled: true
  50. },
  51. startWithAudioMuted,
  52. startWithVideoMuted
  53. }));
  54. const { tryCreateLocalTracks, errors } = createPrejoinTracks();
  55. const tracks = await tryCreateLocalTracks;
  56. batch(() => {
  57. dispatch(initPrejoin(tracks, errors));
  58. dispatch(makePrecallTest(getConferenceOptions(store.getState())));
  59. });
  60. }
  61. /**
  62. * Overrides the parent method to inject {@link AtlasKitThemeProvider} as
  63. * the top most component.
  64. *
  65. * @override
  66. */
  67. _createMainElement(component, props) {
  68. return (
  69. <JitsiThemeProvider>
  70. <AtlasKitThemeProvider mode = 'dark'>
  71. <GlobalStyles />
  72. { super._createMainElement(component, props) }
  73. </AtlasKitThemeProvider>
  74. </JitsiThemeProvider>
  75. );
  76. }
  77. /**
  78. * Renders the platform specific dialog container.
  79. *
  80. * @returns {React$Element}
  81. */
  82. _renderDialogContainer() {
  83. return (
  84. <JitsiThemeProvider>
  85. <AtlasKitThemeProvider mode = 'dark'>
  86. <DialogContainer />
  87. </AtlasKitThemeProvider>
  88. </JitsiThemeProvider>
  89. );
  90. }
  91. }