| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- import { withStyles } from '@mui/styles';
- import React, { Component } from 'react';
- import { WithTranslation } from 'react-i18next';
-
- import { IReduxState, IStore } from '../../app/types';
- import { translate } from '../../base/i18n/functions';
- import { getParticipantById } from '../../base/participants/functions';
- import { connect } from '../../base/redux/functions';
- import Dialog from '../../base/ui/components/web/Dialog';
- import { participantVerified } from '../actions';
- import { ISas } from '../reducer';
-
- interface IProps extends WithTranslation {
- classes: any;
- decimal: string;
- dispatch: IStore['dispatch'];
- emoji: string;
- pId: string;
- participantName: string;
- sas: ISas;
- }
-
- /**
- * Creates the styles for the component.
- *
- * @param {Object} theme - The current UI theme.
- *
- * @returns {Object}
- */
- const styles = () => {
- return {
- container: {
- display: 'flex',
- flexDirection: 'column',
- margin: '16px'
- },
- row: {
- alignSelf: 'center',
- display: 'flex'
- },
- item: {
- textAlign: 'center',
- margin: '16px'
- },
- emoji: {
- fontSize: '40px',
- margin: '12px'
- }
- };
- };
-
-
- /**
- * Class for the dialog displayed for E2EE sas verification.
- */
- export class ParticipantVerificationDialog extends Component<IProps> {
- /**
- * Instantiates a new instance.
- *
- * @inheritdoc
- */
- constructor(props: IProps) {
- super(props);
-
- this._onConfirmed = this._onConfirmed.bind(this);
- this._onDismissed = this._onDismissed.bind(this);
- }
-
- /**
- * Implements React's {@link Component#render()}.
- *
- * @inheritdoc
- * @returns {ReactElement}
- */
- render() {
- const { emoji } = this.props.sas;
- const { participantName } = this.props;
-
- const { classes, t } = this.props;
-
- return (
- <Dialog
- cancel = {{ translationKey: 'dialog.verifyParticipantDismiss' }}
- ok = {{ translationKey: 'dialog.verifyParticipantConfirm' }}
- onCancel = { this._onDismissed }
- onSubmit = { this._onConfirmed }
- titleKey = 'dialog.verifyParticipantTitle'>
- <div>
- { t('dialog.verifyParticipantQuestion', { participantName }) }
- </div>
-
- <div className = { classes.container }>
- <div className = { classes.row }>
- {/* @ts-ignore */}
- {emoji.slice(0, 4).map((e: Array<string>) =>
- (<div
- className = { classes.item }
- key = { e.toString() }>
- <div className = { classes.emoji }>{ e[0] }</div>
- <div>{ e[1].charAt(0).toUpperCase() + e[1].slice(1) }</div>
- </div>))}
- </div>
-
- <div className = { classes.row }>
- {/* @ts-ignore */}
- {emoji.slice(4, 7).map((e: Array<string>) =>
- (<div
- className = { classes.item }
- key = { e.toString() }>
- <div className = { classes.emoji }>{ e[0] } </div>
- <div>{ e[1].charAt(0).toUpperCase() + e[1].slice(1) }</div>
- </div>))}
- </div>
-
- </div>
-
- </Dialog>
- );
- }
-
- /**
- * Notifies this ParticipantVerificationDialog that it has been dismissed by cancel.
- *
- * @private
- * @returns {void}
- */
- _onDismissed() {
- this.props.dispatch(participantVerified(this.props.pId, false));
-
- return true;
- }
-
- /**
- * Notifies this ParticipantVerificationDialog that it has been dismissed with confirmation.
- *
- * @private
- * @returns {void}
- */
- _onConfirmed() {
- this.props.dispatch(participantVerified(this.props.pId, true));
-
- return true;
- }
- }
-
- /**
- * Maps part of the Redux store to the props of this component.
- *
- * @param {IReduxState} state - The Redux state.
- * @param {IProps} ownProps - The own props of the component.
- * @returns {IProps}
- */
- export function _mapStateToProps(state: IReduxState, ownProps: IProps) {
- const participant = getParticipantById(state, ownProps.pId);
-
- return {
- sas: ownProps.sas,
- pId: ownProps.pId,
- participantName: participant?.name
- };
- }
-
- export default translate(connect(_mapStateToProps)(
-
- // @ts-ignore
- withStyles(styles)(ParticipantVerificationDialog)));
|