Fix error on accessing encrypted media without keys

In case where the message is encrypted and you request cross-signed keys
from another session you may end up in a situation where `media` doesn't
exist as you didn't receive keys, yet you have the message's type.
This commit fixes this problem by checking if the media is even available.
This commit is contained in:
Dariusz Niemczyk 2021-08-16 15:30:48 +02:00
parent be18178015
commit 9dfa01e1a8
No known key found for this signature in database
GPG key ID: 28DFE7164F497CB6

View file

@ -178,7 +178,7 @@ export default class MFileBody extends React.Component<IProps, IState> {
private onPlaceholderClick = async () => { private onPlaceholderClick = async () => {
const mediaHelper = this.props.mediaEventHelper; const mediaHelper = this.props.mediaEventHelper;
if (mediaHelper.media.isEncrypted) { if (mediaHelper?.media.isEncrypted) {
await this.decryptFile(); await this.decryptFile();
this.downloadFile(this.fileName, this.linkText); this.downloadFile(this.fileName, this.linkText);
} else { } else {
@ -192,7 +192,7 @@ export default class MFileBody extends React.Component<IProps, IState> {
}; };
public render() { public render() {
const isEncrypted = this.props.mediaEventHelper.media.isEncrypted; const isEncrypted = this.props.mediaEventHelper?.media.isEncrypted;
const contentUrl = this.getContentUrl(); const contentUrl = this.getContentUrl();
const fileSize = this.content.info ? this.content.info.size : null; const fileSize = this.content.info ? this.content.info.size : null;
const fileType = this.content.info ? this.content.info.mimetype : "application/octet-stream"; const fileType = this.content.info ? this.content.info.mimetype : "application/octet-stream";