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.

UserMediaPermissionsOverlay.js 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // @flow
  2. import React from 'react';
  3. import { translate, translateToHTML } from '../../../base/i18n';
  4. import { connect } from '../../../base/redux';
  5. import AbstractUserMediaPermissionsOverlay, { abstractMapStateToProps }
  6. from './AbstractUserMediaPermissionsOverlay';
  7. import OverlayFrame from './OverlayFrame';
  8. declare var interfaceConfig: Object;
  9. /**
  10. * Implements a React Component for overlay with guidance how to proceed with
  11. * gUM prompt.
  12. */
  13. class UserMediaPermissionsOverlay extends AbstractUserMediaPermissionsOverlay {
  14. /**
  15. * Implements React's {@link Component#render()}.
  16. *
  17. * @inheritdoc
  18. * @returns {ReactElement}
  19. */
  20. render() {
  21. const { browser, t } = this.props;
  22. return (
  23. <OverlayFrame>
  24. <div className = 'inlay'>
  25. <span className = 'inlay__icon icon-microphone' />
  26. <span className = 'inlay__icon icon-camera' />
  27. <h3 className = 'inlay__title'>
  28. {
  29. t('startupoverlay.title',
  30. { app: interfaceConfig.APP_NAME })
  31. }
  32. </h3>
  33. <span className = 'inlay__text'>
  34. {
  35. translateToHTML(t,
  36. `userMedia.${browser}GrantPermissions`)
  37. }
  38. </span>
  39. </div>
  40. <div className = 'policy overlay__policy'>
  41. <p className = 'policy__text'>
  42. { translateToHTML(t, 'startupoverlay.policyText') }
  43. </p>
  44. {
  45. this._renderPolicyLogo()
  46. }
  47. </div>
  48. </OverlayFrame>
  49. );
  50. }
  51. /**
  52. * Renders the policy logo.
  53. *
  54. * @private
  55. * @returns {ReactElement|null}
  56. */
  57. _renderPolicyLogo() {
  58. const policyLogoSrc = interfaceConfig.POLICY_LOGO;
  59. if (policyLogoSrc) {
  60. return (
  61. <div className = 'policy__logo'>
  62. <img src = { policyLogoSrc } />
  63. </div>
  64. );
  65. }
  66. return null;
  67. }
  68. }
  69. export default translate(
  70. connect(abstractMapStateToProps)(UserMediaPermissionsOverlay));