From 9cbc40730583d6c78caabe97afc18b9a2a36eef5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 29 Apr 2020 10:44:51 +0100 Subject: [PATCH] Add the other toast component --- .../views/toasts/UnverifiedSessionToast.js | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/components/views/toasts/UnverifiedSessionToast.js diff --git a/src/components/views/toasts/UnverifiedSessionToast.js b/src/components/views/toasts/UnverifiedSessionToast.js new file mode 100644 index 0000000000..3f2f29a493 --- /dev/null +++ b/src/components/views/toasts/UnverifiedSessionToast.js @@ -0,0 +1,69 @@ +/* +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 { _t } from '../../../languageHandler'; +import { MatrixClientPeg } from '../../../MatrixClientPeg'; +import Modal from '../../../Modal'; +import DeviceListener from '../../../DeviceListener'; +import NewSessionReviewDialog from '../dialogs/NewSessionReviewDialog'; +import FormButton from '../elements/FormButton'; +import { replaceableComponent } from '../../../utils/replaceableComponent'; + +@replaceableComponent("views.toasts.UnverifiedSessionToast") +export default class UnverifiedSessionToast extends React.PureComponent { + static propTypes = { + deviceId: PropTypes.object, + } + + _onLaterClick = () => { + DeviceListener.sharedInstance().dismissUnverifiedSessions([this.props.deviceId]); + }; + + _onReviewClick = async () => { + const cli = MatrixClientPeg.get(); + Modal.createTrackedDialog('New Session Review', 'Starting dialog', NewSessionReviewDialog, { + userId: cli.getUserId(), + device: cli.getStoredDevice(cli.getUserId(), this.props.deviceId), + onFinished: (r) => { + if (!r) { + /* This'll come back false if the user clicks "this wasn't me" and saw a warning dialog */ + DeviceListener.sharedInstance().dismissUnverifiedSessions([this.props.deviceId]); + } + }, + }, null, /* priority = */ false, /* static = */ true); + }; + + render() { + const cli = MatrixClientPeg.get(); + const device = cli.getStoredDevice(cli.getUserId(), this.props.deviceId); + + return (
+
+ + {device.getDisplayName()} + + ({device.deviceId}) + +
+
+ + +
+
); + } +}