Merge pull request #4196 from matrix-org/bwindels/verifdialogpromise

Immediately switch to verification dialog when clicking [Continue] from new session dialog
pull/21833/head
Bruno Windels 2020-03-11 09:03:31 +00:00 committed by GitHub
commit 27db5d68be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 7 deletions

View File

@ -54,17 +54,18 @@ export default class NewSessionReviewDialog extends React.PureComponent {
}); });
} }
onContinueClick = async () => { onContinueClick = () => {
const { userId, device } = this.props; const { userId, device } = this.props;
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
const request = await cli.requestVerification( const requestPromise = cli.requestVerification(
userId, userId,
[device.deviceId], [device.deviceId],
); );
this.props.onFinished(true); this.props.onFinished(true);
Modal.createTrackedDialog('New Session Verification', 'Starting dialog', VerificationRequestDialog, { Modal.createTrackedDialog('New Session Verification', 'Starting dialog', VerificationRequestDialog, {
verificationRequest: request, verificationRequestPromise: requestPromise,
member: cli.getUser(userId),
}); });
} }

View File

@ -22,7 +22,8 @@ import { _t } from '../../../languageHandler';
export default class VerificationRequestDialog extends React.Component { export default class VerificationRequestDialog extends React.Component {
static propTypes = { static propTypes = {
verificationRequest: PropTypes.object.isRequired, verificationRequest: PropTypes.object,
verificationRequestPromise: PropTypes.object,
onFinished: PropTypes.func.isRequired, onFinished: PropTypes.func.isRequired,
}; };
@ -34,6 +35,8 @@ export default class VerificationRequestDialog extends React.Component {
render() { render() {
const BaseDialog = sdk.getComponent("views.dialogs.BaseDialog"); const BaseDialog = sdk.getComponent("views.dialogs.BaseDialog");
const EncryptionPanel = sdk.getComponent("views.right_panel.EncryptionPanel"); const EncryptionPanel = sdk.getComponent("views.right_panel.EncryptionPanel");
const member = this.props.member ||
MatrixClientPeg.get().getUser(this.props.verificationRequest.otherUserId);
return <BaseDialog className="mx_InfoDialog" onFinished={this.onFinished} return <BaseDialog className="mx_InfoDialog" onFinished={this.onFinished}
contentId="mx_Dialog_content" contentId="mx_Dialog_content"
title={_t("Verification Request")} title={_t("Verification Request")}
@ -42,14 +45,19 @@ export default class VerificationRequestDialog extends React.Component {
<EncryptionPanel <EncryptionPanel
layout="dialog" layout="dialog"
verificationRequest={this.props.verificationRequest} verificationRequest={this.props.verificationRequest}
verificationRequestPromise={this.props.verificationRequestPromise}
onClose={this.props.onFinished} onClose={this.props.onFinished}
member={MatrixClientPeg.get().getUser(this.props.verificationRequest.otherUserId)} member={member}
/> />
</BaseDialog>; </BaseDialog>;
} }
onFinished() { async onFinished() {
this.props.verificationRequest.cancel();
this.props.onFinished(); this.props.onFinished();
let request = this.props.verificationRequest;
if (!request && this.props.verificationRequestPromise) {
request = await this.props.verificationRequestPromise;
}
request.cancel();
} }
} }