diff --git a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js index 89a9e9e47d4..c5a7ff558d9 100644 --- a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js +++ b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js @@ -1,5 +1,5 @@ /* -Copyright 2018 New Vector Ltd +Copyright 2018, 2019 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -509,7 +509,7 @@ export default React.createClass({
{content} diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 59bb4befbe6..368aeb4f19f 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -1,7 +1,7 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd +Copyright 2018, 2019 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -610,17 +610,10 @@ module.exports = React.createClass({ } }, - async onRoomRecoveryReminderFinished(backupCreated) { - // If the user cancelled the key backup dialog, it suggests they don't - // want to be reminded anymore. - if (!backupCreated) { - await SettingsStore.setValue( - "showRoomRecoveryReminder", - null, - SettingLevel.ACCOUNT, - false, - ); - } + onRoomRecoveryReminderDontAskAgain: function() { + // Called when the option to not ask again is set: + // force an update to hide the recovery reminder + this.forceUpdate(); }, onKeyBackupStatus() { @@ -1705,7 +1698,7 @@ module.exports = React.createClass({ aux = ; hideCancel = true; } else if (showRoomRecoveryReminder) { - aux = ; + aux = ; hideCancel = true; } else if (this.state.showingPinned) { hideCancel = true; // has own cancel diff --git a/src/components/views/rooms/RoomRecoveryReminder.js b/src/components/views/rooms/RoomRecoveryReminder.js index d03c5fc96d7..01447012e64 100644 --- a/src/components/views/rooms/RoomRecoveryReminder.js +++ b/src/components/views/rooms/RoomRecoveryReminder.js @@ -1,5 +1,5 @@ /* -Copyright 2018 New Vector Ltd +Copyright 2018, 2019 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -20,10 +20,16 @@ import sdk from "../../../index"; import { _t } from "../../../languageHandler"; import Modal from "../../../Modal"; import MatrixClientPeg from "../../../MatrixClientPeg"; +import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore"; export default class RoomRecoveryReminder extends React.PureComponent { static propTypes = { - onFinished: PropTypes.func.isRequired, + // called if the user sets the option to suppress this reminder in the future + onDontAskAgainSet: PropTypes.func, + } + + static defaultProps = { + onDontAskAgainSet: function() {}, } constructor(props) { @@ -82,7 +88,6 @@ export default class RoomRecoveryReminder extends React.PureComponent { Modal.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, { userId: MatrixClientPeg.get().credentials.userId, device: this.state.unverifiedDevice, - onFinished: this.props.onFinished, }); return; } @@ -91,9 +96,6 @@ export default class RoomRecoveryReminder extends React.PureComponent { // we'll show the create key backup flow. Modal.createTrackedDialogAsync("Key Backup", "Key Backup", import("../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog"), - { - onFinished: this.props.onFinished, - }, ); } @@ -103,10 +105,14 @@ export default class RoomRecoveryReminder extends React.PureComponent { Modal.createTrackedDialogAsync("Ignore Recovery Reminder", "Ignore Recovery Reminder", import("../../../async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog"), { - onDontAskAgain: () => { - // Report false to the caller, who should prevent the - // reminder from appearing in the future. - this.props.onFinished(false); + onDontAskAgain: async () => { + await SettingsStore.setValue( + "showRoomRecoveryReminder", + null, + SettingLevel.ACCOUNT, + false, + ); + this.props.onDontAskAgainSet(); }, onSetup: () => { this.showSetupDialog();