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.

UserMediaPermissionsOverlay.js 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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
  28. aria-label = { t('startupoverlay.genericTitle') }
  29. className = 'inlay__title'
  30. role = 'alert' >
  31. {
  32. t('startupoverlay.genericTitle')
  33. }
  34. </h3>
  35. <span
  36. className = 'inlay__text'
  37. role = 'alert' >
  38. {
  39. translateToHTML(t,
  40. `userMedia.${browser}GrantPermissions`)
  41. }
  42. </span>
  43. </div>
  44. <div className = 'policy overlay__policy'>
  45. <p
  46. className = 'policy__text'
  47. role = 'alert'>
  48. { translateToHTML(t, 'startupoverlay.policyText') }
  49. </p>
  50. {
  51. this._renderPolicyLogo()
  52. }
  53. </div>
  54. </OverlayFrame>
  55. );
  56. }
  57. /**
  58. * Renders the policy logo.
  59. *
  60. * @private
  61. * @returns {ReactElement|null}
  62. */
  63. _renderPolicyLogo() {
  64. const policyLogoSrc = interfaceConfig.POLICY_LOGO;
  65. if (policyLogoSrc) {
  66. return (
  67. <div className = 'policy__logo'>
  68. <img
  69. alt = { this.props.t('welcomepage.logo.policyLogo') }
  70. src = { policyLogoSrc } />
  71. </div>
  72. );
  73. }
  74. return null;
  75. }
  76. }
  77. export default translate(
  78. connect(abstractMapStateToProps)(UserMediaPermissionsOverlay));