merge next

This commit is contained in:
or-else
2023-01-04 18:09:16 -08:00
47 changed files with 176 additions and 46 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "Das Format dieses Videos wird nicht erkannt",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "Format of this video is not recognized",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "No se reconoce el formato de este video",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+4
View File
@@ -868,6 +868,10 @@
"defaultMessage": "Unnamed",
"description": "Title shown when the topic has no name"
},
"unrecognized_video_format": {
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid"
},
"update_available": {
"defaultMessage": "Update available.",
"description": "Message shown when an app update is available."
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "Le format de cette vidéo n'est pas reconnu",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "이 동영상의 형식을 인식할 수 없습니다.",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "Formatul acestui videoclip nu este recunoscut",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "Неизвестный формат видео файла",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "無法識別此視頻的格式",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7
View File
@@ -1549,5 +1549,12 @@
"description": "Start audio call",
"missing": true,
"obsolete": false
},
"unrecognized_video_format": {
"translation": "无法识别此视频的格式",
"defaultMessage": "Format of this video is not recognized",
"description": "Error message when uploaded video is invalid",
"missing": false,
"obsolete": false
}
}
+7 -2
View File
@@ -292,6 +292,7 @@ class MessagesView extends React.Component {
nextState = {
topic: nextProps.topic,
deleted: topic._deleted,
docPreview: null,
imagePreview: null,
imagePostview: null,
@@ -302,7 +303,9 @@ class MessagesView extends React.Component {
scrollPosition: 0,
fetchingMessages: false,
showGoToLastButton: false,
deleted: topic._deleted,
forwardMessage: null,
reply: null,
contentToEdit: null,
dragging: false
};
@@ -1012,7 +1015,7 @@ class MessagesView extends React.Component {
if (uploads.length == 0) {
// Both video and preview are small enough to send inband.
Promise.all(blobToBase64(videoBlob), blobToBase64(previewBlob))
Promise.all([blobToBase64(videoBlob), blobToBase64(previewBlob)])
.then(b64s => {
const [v64, i64] = b64s;
let msg = Drafty.insertVideo(null, 0, {
@@ -1312,6 +1315,7 @@ class MessagesView extends React.Component {
content={this.state.videoPreview}
tinode={this.props.tinode}
reply={this.state.reply}
onError={this.props.onError}
onCancelReply={this.handleCancelReply}
onClose={this.handleClosePreview}
onSendMessage={this.sendVideoAttachment} />
@@ -1329,6 +1333,7 @@ class MessagesView extends React.Component {
<VideoPreview
content={this.state.videoPostview}
tinode={this.props.tinode}
onError={this.props.onError}
onClose={this.handleClosePreview} />
);
} else if (this.state.docPreview) {
+1 -1
View File
@@ -142,7 +142,7 @@ class CallPanel extends React.PureComponent {
start() {
if (this.state.localStream) {
this.props.onError(this.props.intl.formatMessage(messages.already_in_call));
this.props.onError(this.props.intl.formatMessage(messages.already_in_call), 'info');
return;
}
+7 -1
View File
@@ -98,9 +98,15 @@ class BaseChatMessage extends React.PureComponent {
if (!this.props.response) {
let immutable = false;
Drafty.entities(this.props.content, (_0, _1, tp) => {
immutable = ['AU', 'EX', 'FM', 'IM', 'QQ', 'VC', 'VD'].includes(tp);
immutable = ['AU', 'EX', 'FM', 'IM', 'VC', 'VD'].includes(tp);
return immutable;
});
if (!immutable) {
Drafty.styles(this.props.content, tp => {
immutable = ['QQ'].includes(tp);
return immutable;
});
}
if (!immutable) {
menuItems.push('menu_item_edit');
}
+18 -3
View File
@@ -1,10 +1,18 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import SendMessage from './send-message.jsx';
import { bytesToHumanSize } from '../lib/strformat.js';
export default class VideoPreview extends React.PureComponent {
const messages = defineMessages({
unrecognized_video_format: {
id: 'unrecognized_video_format',
defaultMessage: 'Format of this video is not recognized',
description: 'Error message when uploaded video is invalid',
}
});
class VideoPreview extends React.PureComponent {
constructor(props) {
super(props);
@@ -23,6 +31,11 @@ export default class VideoPreview extends React.PureComponent {
name: this.props.content.filename
}
if (params.width == 0 || params.height == 0) {
this.props.onError(this.props.intl.formatMessage(messages.unrecognized_video_format), 'err');
return;
}
// Capture screen from a video.
const canvas = document.createElement('canvas');
canvas.width = params.width;
@@ -55,7 +68,7 @@ export default class VideoPreview extends React.PureComponent {
<div id="image-preview-container">
<video
className="image-preview"
controls controlist={controlist}
controls controlsList={controlist}
disablePictureInPicture ref={this.videoRef}
autoPlay={autoPlay}
src={this.props.tinode.authorizeURL(this.props.content.url)}
@@ -93,3 +106,5 @@ export default class VideoPreview extends React.PureComponent {
);
}
};
export default injectIntl(VideoPreview);