Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

PrejoinApp.tsx 3.0KB

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