Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

PrejoinApp.js 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // @flow
  2. import { AtlasKitThemeProvider } from '@atlaskit/theme';
  3. import React from 'react';
  4. import { batch } from 'react-redux';
  5. import { BaseApp } from '../../../features/base/app';
  6. import { getConferenceOptions } from '../../base/conference/functions';
  7. import { setConfig } from '../../base/config';
  8. import { DialogContainer } from '../../base/dialog';
  9. import { createPrejoinTracks } from '../../base/tracks';
  10. import JitsiThemeProvider from '../../base/ui/components/JitsiThemeProvider';
  11. import { initPrejoin, makePrecallTest } from '../actions';
  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. * @extends BaseApp
  23. */
  24. export default class PrejoinApp extends BaseApp<Props> {
  25. _init: Promise<*>;
  26. /**
  27. * Navigates to {@link Prejoin} upon mount.
  28. *
  29. * @returns {void}
  30. */
  31. componentDidMount() {
  32. super.componentDidMount();
  33. this._init.then(async () => {
  34. const { store } = this.state;
  35. const { dispatch } = store;
  36. const { styleType } = this.props;
  37. super._navigate({
  38. component: PrejoinThirdParty,
  39. props: {
  40. className: styleType
  41. }
  42. });
  43. const { startWithAudioMuted, startWithVideoMuted } = store.getState()['features/base/settings'];
  44. dispatch(setConfig({
  45. prejoinPageEnabled: true,
  46. startWithAudioMuted,
  47. startWithVideoMuted
  48. }));
  49. const { tryCreateLocalTracks, errors } = createPrejoinTracks();
  50. const tracks = await tryCreateLocalTracks;
  51. batch(() => {
  52. dispatch(initPrejoin(tracks, errors));
  53. dispatch(makePrecallTest(getConferenceOptions(store.getState())));
  54. });
  55. });
  56. }
  57. /**
  58. * Overrides the parent method to inject {@link AtlasKitThemeProvider} as
  59. * the top most component.
  60. *
  61. * @override
  62. */
  63. _createMainElement(component, props) {
  64. return (
  65. <JitsiThemeProvider>
  66. <AtlasKitThemeProvider mode = 'dark'>
  67. { super._createMainElement(component, props) }
  68. </AtlasKitThemeProvider>
  69. </JitsiThemeProvider>
  70. );
  71. }
  72. /**
  73. * Renders the platform specific dialog container.
  74. *
  75. * @returns {React$Element}
  76. */
  77. _renderDialogContainer() {
  78. return (
  79. <JitsiThemeProvider>
  80. <AtlasKitThemeProvider mode = 'dark'>
  81. <DialogContainer />
  82. </AtlasKitThemeProvider>
  83. </JitsiThemeProvider>
  84. );
  85. }
  86. }