Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 0feeccc

Browse files
authored
Wire up file preview for video files (#8140)
1 parent 60ecaac commit 0feeccc

File tree

3 files changed

+34
-24
lines changed

3 files changed

+34
-24
lines changed

src/components/views/dialogs/UploadConfirmDialog.tsx

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ interface IProps {
3333

3434
@replaceableComponent("views.dialogs.UploadConfirmDialog")
3535
export default class UploadConfirmDialog extends React.Component<IProps> {
36-
private objectUrl: string;
37-
private mimeType: string;
36+
private readonly objectUrl: string;
37+
private readonly mimeType: string;
3838

3939
static defaultProps = {
4040
totalFiles: 1,
@@ -69,7 +69,7 @@ export default class UploadConfirmDialog extends React.Component<IProps> {
6969
};
7070

7171
render() {
72-
let title;
72+
let title: string;
7373
if (this.props.totalFiles > 1 && this.props.currentIndex !== undefined) {
7474
title = _t(
7575
"Upload files (%(current)s of %(total)s)",
@@ -82,23 +82,23 @@ export default class UploadConfirmDialog extends React.Component<IProps> {
8282
title = _t('Upload files');
8383
}
8484

85-
let preview;
86-
if (this.mimeType.startsWith('image/')) {
87-
preview = <div className="mx_UploadConfirmDialog_previewOuter">
88-
<div className="mx_UploadConfirmDialog_previewInner">
89-
<div><img className="mx_UploadConfirmDialog_imagePreview" src={this.objectUrl} /></div>
90-
<div>{ this.props.file.name } ({ filesize(this.props.file.size) })</div>
91-
</div>
92-
</div>;
85+
let preview: JSX.Element;
86+
let placeholder: JSX.Element;
87+
if (this.mimeType.startsWith("image/")) {
88+
preview = (
89+
<img className="mx_UploadConfirmDialog_imagePreview" src={this.objectUrl} />
90+
);
91+
} else if (this.mimeType.startsWith("video/")) {
92+
preview = (
93+
<video className="mx_UploadConfirmDialog_imagePreview" src={this.objectUrl} playsInline controls={false} />
94+
);
9395
} else {
94-
preview = <div>
95-
<div>
96-
<img className="mx_UploadConfirmDialog_fileIcon"
97-
src={require("../../../../res/img/feather-customised/files.svg").default}
98-
/>
99-
{ this.props.file.name } ({ filesize(this.props.file.size) })
100-
</div>
101-
</div>;
96+
placeholder = (
97+
<img
98+
className="mx_UploadConfirmDialog_fileIcon"
99+
src={require("../../../../res/img/feather-customised/files.svg").default}
100+
/>
101+
);
102102
}
103103

104104
let uploadAllButton;
@@ -109,14 +109,23 @@ export default class UploadConfirmDialog extends React.Component<IProps> {
109109
}
110110

111111
return (
112-
<BaseDialog className='mx_UploadConfirmDialog'
112+
<BaseDialog
113+
className="mx_UploadConfirmDialog"
113114
fixedWidth={false}
114115
onFinished={this.onCancelClick}
115116
title={title}
116-
contentId='mx_Dialog_content'
117+
contentId="mx_Dialog_content"
117118
>
118-
<div id='mx_Dialog_content'>
119-
{ preview }
119+
<div id="mx_Dialog_content">
120+
<div className="mx_UploadConfirmDialog_previewOuter">
121+
<div className="mx_UploadConfirmDialog_previewInner">
122+
{ preview && <div>{ preview }</div> }
123+
<div>
124+
{ placeholder }
125+
{ this.props.file.name } ({ filesize(this.props.file.size) })
126+
</div>
127+
</div>
128+
</div>
120129
</div>
121130

122131
<DialogButtons primaryButton={_t('Upload')}

src/components/views/voip/VideoFeed.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ export default class VideoFeed extends React.PureComponent<IProps, IState> {
226226
),
227227
});
228228

229-
content= (
229+
content = (
230230
<video className={videoClasses} ref={this.setElementRef} />
231231
);
232232
}

src/utils/blobs.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const ALLOWED_BLOB_MIMETYPES = [
5656
'video/mp4',
5757
'video/webm',
5858
'video/ogg',
59+
'video/quicktime',
5960

6061
'audio/mp4',
6162
'audio/webm',

0 commit comments

Comments
 (0)