Merge pull request #2282 from matrix-org/dbkr/crypto_db_version_upgrade
Handle crypto db version upgrade
This commit is contained in:
commit
e3e82fc9c9
3 changed files with 92 additions and 7 deletions
|
@ -23,10 +23,12 @@ import Matrix from 'matrix-js-sdk';
|
||||||
import utils from 'matrix-js-sdk/lib/utils';
|
import utils from 'matrix-js-sdk/lib/utils';
|
||||||
import EventTimeline from 'matrix-js-sdk/lib/models/event-timeline';
|
import EventTimeline from 'matrix-js-sdk/lib/models/event-timeline';
|
||||||
import EventTimelineSet from 'matrix-js-sdk/lib/models/event-timeline-set';
|
import EventTimelineSet from 'matrix-js-sdk/lib/models/event-timeline-set';
|
||||||
|
import sdk from './index';
|
||||||
import createMatrixClient from './utils/createMatrixClient';
|
import createMatrixClient from './utils/createMatrixClient';
|
||||||
import SettingsStore from './settings/SettingsStore';
|
import SettingsStore from './settings/SettingsStore';
|
||||||
import MatrixActionCreators from './actions/MatrixActionCreators';
|
import MatrixActionCreators from './actions/MatrixActionCreators';
|
||||||
import {phasedRollOutExpiredForUser} from "./PhasedRollOut";
|
import {phasedRollOutExpiredForUser} from "./PhasedRollOut";
|
||||||
|
import Modal from './Modal';
|
||||||
|
|
||||||
interface MatrixClientCreds {
|
interface MatrixClientCreds {
|
||||||
homeserverUrl: string,
|
homeserverUrl: string,
|
||||||
|
@ -116,6 +118,14 @@ class MatrixClientPeg {
|
||||||
await this.matrixClient.initCrypto();
|
await this.matrixClient.initCrypto();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
if (e.name === 'InvalidCryptoStoreError') {
|
||||||
|
// The js-sdk found a crypto DB too new for it to use
|
||||||
|
const CryptoStoreTooNewDialog =
|
||||||
|
sdk.getComponent("views.dialogs.CryptoStoreTooNewDialog");
|
||||||
|
Modal.createDialog(CryptoStoreTooNewDialog, {
|
||||||
|
host: window.location.host,
|
||||||
|
});
|
||||||
|
}
|
||||||
// this can happen for a number of reasons, the most likely being
|
// this can happen for a number of reasons, the most likely being
|
||||||
// that the olm library was missing. It's not fatal.
|
// that the olm library was missing. It's not fatal.
|
||||||
console.warn("Unable to initialise e2e: " + e);
|
console.warn("Unable to initialise e2e: " + e);
|
||||||
|
|
71
src/components/views/dialogs/CryptoStoreTooNewDialog.js
Normal file
71
src/components/views/dialogs/CryptoStoreTooNewDialog.js
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 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.
|
||||||
|
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 sdk from '../../../index';
|
||||||
|
import dis from '../../../dispatcher';
|
||||||
|
import { _t } from '../../../languageHandler';
|
||||||
|
import Modal from '../../../Modal';
|
||||||
|
|
||||||
|
export default (props) => {
|
||||||
|
const _onLogoutClicked = () => {
|
||||||
|
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
|
||||||
|
Modal.createTrackedDialog('Logout e2e db too new', '', QuestionDialog, {
|
||||||
|
title: _t("Sign out"),
|
||||||
|
description: _t(
|
||||||
|
"To avoid losing your chat history, you must export your room keys " +
|
||||||
|
"before logging out. You will need to go back to the newer version of " +
|
||||||
|
"Riot to do this",
|
||||||
|
),
|
||||||
|
button: _t("Sign out"),
|
||||||
|
focus: false,
|
||||||
|
onFinished: (doLogout) => {
|
||||||
|
if (doLogout) {
|
||||||
|
dis.dispatch({action: 'logout'});
|
||||||
|
props.onFinished();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const description =
|
||||||
|
_t("You've previously used a newer version of Riot on %(host)s. " +
|
||||||
|
"To use this version again with end to end encryption, you will " +
|
||||||
|
"need to sign out and back in again. ",
|
||||||
|
{host: props.host},
|
||||||
|
);
|
||||||
|
|
||||||
|
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
|
||||||
|
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
||||||
|
return (<BaseDialog className="mx_CryptoStoreTooNewDialog"
|
||||||
|
contentId='mx_Dialog_content'
|
||||||
|
title={_t("Incompatible Database")}
|
||||||
|
hasCancel={false}
|
||||||
|
onFinished={props.onFinished}
|
||||||
|
>
|
||||||
|
<div className="mx_Dialog_content" id='mx_Dialog_content'>
|
||||||
|
{ description }
|
||||||
|
</div>
|
||||||
|
<DialogButtons primaryButton={_t('Continue With Encryption Disabled')}
|
||||||
|
hasCancel={false}
|
||||||
|
onPrimaryButtonClick={props.onFinished}
|
||||||
|
>
|
||||||
|
<button onClick={_onLogoutClicked} >
|
||||||
|
{ _t('Sign out') }
|
||||||
|
</button>
|
||||||
|
</DialogButtons>
|
||||||
|
</BaseDialog>);
|
||||||
|
};
|
|
@ -249,10 +249,11 @@
|
||||||
"Enable URL previews for this room (only affects you)": "Enable URL previews for this room (only affects you)",
|
"Enable URL previews for this room (only affects you)": "Enable URL previews for this room (only affects you)",
|
||||||
"Enable URL previews by default for participants in this room": "Enable URL previews by default for participants in this room",
|
"Enable URL previews by default for participants in this room": "Enable URL previews by default for participants in this room",
|
||||||
"Room Colour": "Room Colour",
|
"Room Colour": "Room Colour",
|
||||||
"Pin unread rooms to the top of the room list": "Pin unread rooms to the top of the room list",
|
|
||||||
"Pin rooms I'm mentioned in to the top of the room list": "Pin rooms I'm mentioned in to the top of the room list",
|
"Pin rooms I'm mentioned in to the top of the room list": "Pin rooms I'm mentioned in to the top of the room list",
|
||||||
|
"Pin unread rooms to the top of the room list": "Pin unread rooms to the top of the room list",
|
||||||
"Enable widget screenshots on supported widgets": "Enable widget screenshots on supported widgets",
|
"Enable widget screenshots on supported widgets": "Enable widget screenshots on supported widgets",
|
||||||
"Show empty room list headings": "Show empty room list headings",
|
"Show empty room list headings": "Show empty room list headings",
|
||||||
|
"Show developer tools": "Show developer tools",
|
||||||
"Collecting app version information": "Collecting app version information",
|
"Collecting app version information": "Collecting app version information",
|
||||||
"Collecting logs": "Collecting logs",
|
"Collecting logs": "Collecting logs",
|
||||||
"Uploading report": "Uploading report",
|
"Uploading report": "Uploading report",
|
||||||
|
@ -553,6 +554,7 @@
|
||||||
"Click here to fix": "Click here to fix",
|
"Click here to fix": "Click here to fix",
|
||||||
"To send events of type <eventType/>, you must be a": "To send events of type <eventType/>, you must be a",
|
"To send events of type <eventType/>, you must be a": "To send events of type <eventType/>, you must be a",
|
||||||
"Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s",
|
"Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s",
|
||||||
|
"Open Devtools": "Open Devtools",
|
||||||
"Who can access this room?": "Who can access this room?",
|
"Who can access this room?": "Who can access this room?",
|
||||||
"Only people who have been invited": "Only people who have been invited",
|
"Only people who have been invited": "Only people who have been invited",
|
||||||
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
|
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
|
||||||
|
@ -849,6 +851,11 @@
|
||||||
"Advanced options": "Advanced options",
|
"Advanced options": "Advanced options",
|
||||||
"Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room",
|
"Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room",
|
||||||
"This setting cannot be changed later!": "This setting cannot be changed later!",
|
"This setting cannot be changed later!": "This setting cannot be changed later!",
|
||||||
|
"Sign out": "Sign out",
|
||||||
|
"To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this",
|
||||||
|
"You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ",
|
||||||
|
"Incompatible Database": "Incompatible Database",
|
||||||
|
"Continue With Encryption Disabled": "Continue With Encryption Disabled",
|
||||||
"Failed to indicate account erasure": "Failed to indicate account erasure",
|
"Failed to indicate account erasure": "Failed to indicate account erasure",
|
||||||
"Unknown error": "Unknown error",
|
"Unknown error": "Unknown error",
|
||||||
"Incorrect password": "Incorrect password",
|
"Incorrect password": "Incorrect password",
|
||||||
|
@ -903,7 +910,6 @@
|
||||||
"Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
|
"Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
|
||||||
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
|
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
|
||||||
"Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
|
"Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
|
||||||
"Sign out": "Sign out",
|
|
||||||
"Log out and remove encryption keys?": "Log out and remove encryption keys?",
|
"Log out and remove encryption keys?": "Log out and remove encryption keys?",
|
||||||
"Clear Storage and Sign Out": "Clear Storage and Sign Out",
|
"Clear Storage and Sign Out": "Clear Storage and Sign Out",
|
||||||
"Send Logs": "Send Logs",
|
"Send Logs": "Send Logs",
|
||||||
|
@ -927,9 +933,7 @@
|
||||||
"Username available": "Username available",
|
"Username available": "Username available",
|
||||||
"To get started, please pick a username!": "To get started, please pick a username!",
|
"To get started, please pick a username!": "To get started, please pick a username!",
|
||||||
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.",
|
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.",
|
||||||
"If you would like to create a Matrix account you can <a>register</a> now.": "If you would like to create a Matrix account you can <a>register</a> now.",
|
|
||||||
"If you already have a Matrix account you can <a>log in</a> instead.": "If you already have a Matrix account you can <a>log in</a> instead.",
|
"If you already have a Matrix account you can <a>log in</a> instead.": "If you already have a Matrix account you can <a>log in</a> instead.",
|
||||||
"You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.",
|
|
||||||
"You have successfully set a password!": "You have successfully set a password!",
|
"You have successfully set a password!": "You have successfully set a password!",
|
||||||
"You have successfully set a password and an email address!": "You have successfully set a password and an email address!",
|
"You have successfully set a password and an email address!": "You have successfully set a password and an email address!",
|
||||||
"You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.",
|
"You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.",
|
||||||
|
@ -1036,6 +1040,8 @@
|
||||||
"This Home server does not support communities": "This Home server does not support communities",
|
"This Home server does not support communities": "This Home server does not support communities",
|
||||||
"Failed to load %(groupId)s": "Failed to load %(groupId)s",
|
"Failed to load %(groupId)s": "Failed to load %(groupId)s",
|
||||||
"Couldn't load home page": "Couldn't load home page",
|
"Couldn't load home page": "Couldn't load home page",
|
||||||
|
"You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.",
|
||||||
|
"If you would like to create a Matrix account you can <a>register</a> now.": "If you would like to create a Matrix account you can <a>register</a> now.",
|
||||||
"Login": "Login",
|
"Login": "Login",
|
||||||
"Failed to reject invitation": "Failed to reject invitation",
|
"Failed to reject invitation": "Failed to reject invitation",
|
||||||
"This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.",
|
"This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.",
|
||||||
|
@ -1272,7 +1278,5 @@
|
||||||
"Import": "Import",
|
"Import": "Import",
|
||||||
"Failed to set direct chat tag": "Failed to set direct chat tag",
|
"Failed to set direct chat tag": "Failed to set direct chat tag",
|
||||||
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
|
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
|
||||||
"Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
|
"Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room"
|
||||||
"Open Devtools": "Open Devtools",
|
|
||||||
"Show developer tools": "Show developer tools"
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue