You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PrejoinApp.tsx 2.6KB

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