You've already forked matrix-react-sdk
							
							
				mirror of
				https://github.com/matrix-org/matrix-react-sdk.git
				synced 2025-11-03 00:33:22 +03:00 
			
		
		
		
	Add new session verification details dialog
This gives more info on the session you're about to verify, including device name and ID. Fixes https://github.com/vector-im/riot-web/issues/11977
This commit is contained in:
		@@ -65,6 +65,7 @@
 | 
				
			|||||||
@import "./views/dialogs/_IncomingSasDialog.scss";
 | 
					@import "./views/dialogs/_IncomingSasDialog.scss";
 | 
				
			||||||
@import "./views/dialogs/_InviteDialog.scss";
 | 
					@import "./views/dialogs/_InviteDialog.scss";
 | 
				
			||||||
@import "./views/dialogs/_MessageEditHistoryDialog.scss";
 | 
					@import "./views/dialogs/_MessageEditHistoryDialog.scss";
 | 
				
			||||||
 | 
					@import "./views/dialogs/_NewSessionReviewDialog.scss";
 | 
				
			||||||
@import "./views/dialogs/_RoomSettingsDialog.scss";
 | 
					@import "./views/dialogs/_RoomSettingsDialog.scss";
 | 
				
			||||||
@import "./views/dialogs/_RoomUpgradeDialog.scss";
 | 
					@import "./views/dialogs/_RoomUpgradeDialog.scss";
 | 
				
			||||||
@import "./views/dialogs/_RoomUpgradeWarningDialog.scss";
 | 
					@import "./views/dialogs/_RoomUpgradeWarningDialog.scss";
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								res/css/views/dialogs/_NewSessionReviewDialog.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								res/css/views/dialogs/_NewSessionReviewDialog.scss
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2020 The Matrix.org Foundation C.I.C.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mx_NewSessionReviewDialog_header {
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mx_NewSessionReviewDialog_headerIcon {
 | 
				
			||||||
 | 
					    width: 24px;
 | 
				
			||||||
 | 
					    height: 24px;
 | 
				
			||||||
 | 
					    margin-right: 4px;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mx_NewSessionReviewDialog_deviceName {
 | 
				
			||||||
 | 
					    font-weight: 600;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.mx_NewSessionReviewDialog_deviceID {
 | 
				
			||||||
 | 
					    font-size: 12px;
 | 
				
			||||||
 | 
					    color: $notice-secondary-color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										92
									
								
								src/components/views/dialogs/NewSessionReviewDialog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/components/views/dialogs/NewSessionReviewDialog.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2020 The Matrix.org Foundation C.I.C.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import React from 'react';
 | 
				
			||||||
 | 
					import PropTypes from 'prop-types';
 | 
				
			||||||
 | 
					import * as sdk from "../../../index";
 | 
				
			||||||
 | 
					import { _t } from '../../../languageHandler';
 | 
				
			||||||
 | 
					import Modal from "../../../Modal";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class NewSessionReviewDialog extends React.PureComponent {
 | 
				
			||||||
 | 
					    static propTypes = {
 | 
				
			||||||
 | 
					        userId: PropTypes.string.isRequired,
 | 
				
			||||||
 | 
					        device: PropTypes.object.isRequired,
 | 
				
			||||||
 | 
					        onFinished: PropTypes.func.isRequired,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    onCancelClick = () => {
 | 
				
			||||||
 | 
					        this.props.onFinished(false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    onContinueClick = () => {
 | 
				
			||||||
 | 
					        const DeviceVerifyDialog =
 | 
				
			||||||
 | 
					            sdk.getComponent('views.dialogs.DeviceVerifyDialog');
 | 
				
			||||||
 | 
					        const { userId, device } = this.props;
 | 
				
			||||||
 | 
					        Modal.createTrackedDialog('New Session Verification', 'Starting dialog', DeviceVerifyDialog, {
 | 
				
			||||||
 | 
					            userId,
 | 
				
			||||||
 | 
					            device,
 | 
				
			||||||
 | 
					        }, null, /* priority = */ false, /* static = */ true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render() {
 | 
				
			||||||
 | 
					        const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
 | 
				
			||||||
 | 
					        const DialogButtons = sdk.getComponent("views.elements.DialogButtons");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const { device } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const icon = <span className="mx_NewSessionReviewDialog_headerIcon mx_E2EIcon_warning"></span>;
 | 
				
			||||||
 | 
					        const titleText = _t("New session");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const title = <h2 className="mx_NewSessionReviewDialog_header">
 | 
				
			||||||
 | 
					            {icon}
 | 
				
			||||||
 | 
					            {titleText}
 | 
				
			||||||
 | 
					        </h2>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (
 | 
				
			||||||
 | 
					            <BaseDialog
 | 
				
			||||||
 | 
					                title={title}
 | 
				
			||||||
 | 
					                onFinished={this.props.onFinished}
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					                <div className="mx_NewSessionReviewDialog_body">
 | 
				
			||||||
 | 
					                    <p>{_t(
 | 
				
			||||||
 | 
					                        "Use this session to verify your new one, " +
 | 
				
			||||||
 | 
					                        "granting it access to encrypted messages:",
 | 
				
			||||||
 | 
					                    )}</p>
 | 
				
			||||||
 | 
					                    <div className="mx_NewSessionReviewDialog_deviceInfo">
 | 
				
			||||||
 | 
					                        <div>
 | 
				
			||||||
 | 
					                            <span className="mx_NewSessionReviewDialog_deviceName">
 | 
				
			||||||
 | 
					                                {device.getDisplayName()}
 | 
				
			||||||
 | 
					                            </span> <span className="mx_NewSessionReviewDialog_deviceID">
 | 
				
			||||||
 | 
					                                ({device.deviceId})
 | 
				
			||||||
 | 
					                            </span>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <p>{_t(
 | 
				
			||||||
 | 
					                        "If you didn’t sign in to this session, " +
 | 
				
			||||||
 | 
					                        "your account may be compromised.",
 | 
				
			||||||
 | 
					                    )}</p>
 | 
				
			||||||
 | 
					                    <DialogButtons
 | 
				
			||||||
 | 
					                        cancelButton={_t("This wasn't me")}
 | 
				
			||||||
 | 
					                        cancelButtonClass="danger"
 | 
				
			||||||
 | 
					                        primaryButton={_t("Continue")}
 | 
				
			||||||
 | 
					                        onCancel={this.onCancelClick}
 | 
				
			||||||
 | 
					                        onPrimaryButtonClick={this.onContinueClick}
 | 
				
			||||||
 | 
					                    />
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </BaseDialog>
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -34,11 +34,12 @@ export default class VerifySessionToast extends React.PureComponent {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    _onReviewClick = async () => {
 | 
					    _onReviewClick = async () => {
 | 
				
			||||||
        const cli = MatrixClientPeg.get();
 | 
					        const cli = MatrixClientPeg.get();
 | 
				
			||||||
        const DeviceVerifyDialog = sdk.getComponent('views.dialogs.DeviceVerifyDialog');
 | 
					        const NewSessionReviewDialog =
 | 
				
			||||||
 | 
					            sdk.getComponent('views.dialogs.NewSessionReviewDialog');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const device = await cli.getStoredDevice(cli.getUserId(), this.props.deviceId);
 | 
					        const device = await cli.getStoredDevice(cli.getUserId(), this.props.deviceId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Modal.createTrackedDialog('New Session Verify', 'Starting dialog', DeviceVerifyDialog, {
 | 
					        Modal.createTrackedDialog('New Session Review', 'Starting dialog', NewSessionReviewDialog, {
 | 
				
			||||||
            userId: MatrixClientPeg.get().getUserId(),
 | 
					            userId: MatrixClientPeg.get().getUserId(),
 | 
				
			||||||
            device,
 | 
					            device,
 | 
				
			||||||
        }, null, /* priority = */ false, /* static = */ true);
 | 
					        }, null, /* priority = */ false, /* static = */ true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1508,6 +1508,10 @@
 | 
				
			|||||||
    "Are you sure you want to sign out?": "Are you sure you want to sign out?",
 | 
					    "Are you sure you want to sign out?": "Are you sure you want to sign out?",
 | 
				
			||||||
    "Your homeserver doesn't seem to support this feature.": "Your homeserver doesn't seem to support this feature.",
 | 
					    "Your homeserver doesn't seem to support this feature.": "Your homeserver doesn't seem to support this feature.",
 | 
				
			||||||
    "Message edits": "Message edits",
 | 
					    "Message edits": "Message edits",
 | 
				
			||||||
 | 
					    "New session": "New session",
 | 
				
			||||||
 | 
					    "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:",
 | 
				
			||||||
 | 
					    "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.",
 | 
				
			||||||
 | 
					    "This wasn't me": "This wasn't me",
 | 
				
			||||||
    "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.",
 | 
					    "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.",
 | 
				
			||||||
    "To help avoid duplicate issues, please <existingIssuesLink>view existing issues</existingIssuesLink> first (and add a +1) or <newIssueLink>create a new issue</newIssueLink> if you can't find it.": "To help avoid duplicate issues, please <existingIssuesLink>view existing issues</existingIssuesLink> first (and add a +1) or <newIssueLink>create a new issue</newIssueLink> if you can't find it.",
 | 
					    "To help avoid duplicate issues, please <existingIssuesLink>view existing issues</existingIssuesLink> first (and add a +1) or <newIssueLink>create a new issue</newIssueLink> if you can't find it.": "To help avoid duplicate issues, please <existingIssuesLink>view existing issues</existingIssuesLink> first (and add a +1) or <newIssueLink>create a new issue</newIssueLink> if you can't find it.",
 | 
				
			||||||
    "Report bugs & give feedback": "Report bugs & give feedback",
 | 
					    "Report bugs & give feedback": "Report bugs & give feedback",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user