Allow only images in modal image uploader. #7672
5 changed files with 24 additions and 2 deletions
|
@ -20,6 +20,7 @@ import path from 'path';
|
||||||
import { diskSpaceLinux, diskSpaceWindows, diskSpaceMac } from '../ui/util/diskspace';
|
import { diskSpaceLinux, diskSpaceWindows, diskSpaceMac } from '../ui/util/diskspace';
|
||||||
|
|
||||||
const { download } = require('electron-dl');
|
const { download } = require('electron-dl');
|
||||||
|
const mime = require('mime');
|
||||||
const remote = require('@electron/remote/main');
|
const remote = require('@electron/remote/main');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
const sudo = require('sudo-prompt');
|
const sudo = require('sudo-prompt');
|
||||||
|
@ -318,6 +319,7 @@ ipcMain.handle('get-file-from-path', (event, path) => {
|
||||||
const fileName = folders[folders.length - 1];
|
const fileName = folders[folders.length - 1];
|
||||||
resolve({
|
resolve({
|
||||||
name: fileName,
|
name: fileName,
|
||||||
|
mime: mime.getType(fileName) || undefined,
|
||||||
path: path,
|
path: path,
|
||||||
buffer: data,
|
buffer: data,
|
||||||
});
|
});
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
"humanize-duration": "^3.27.0",
|
"humanize-duration": "^3.27.0",
|
||||||
"if-env": "^1.0.4",
|
"if-env": "^1.0.4",
|
||||||
"match-sorter": "^6.3.0",
|
"match-sorter": "^6.3.0",
|
||||||
|
"mime": "^3.0.0",
|
||||||
"node-html-parser": "^5.1.0",
|
"node-html-parser": "^5.1.0",
|
||||||
"parse-duration": "^1.0.0",
|
"parse-duration": "^1.0.0",
|
||||||
"proxy-polyfill": "0.1.6",
|
"proxy-polyfill": "0.1.6",
|
||||||
|
|
|
@ -83,7 +83,16 @@ class FileSelector extends React.PureComponent<Props> {
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const file = new File([result.buffer], result.name);
|
const file = new File([result.buffer], result.name, {
|
||||||
|
type: result.mime,
|
||||||
|
});
|
||||||
|
// "path" is a read only property so we have to use this
|
||||||
|
// hack to overcome the limitation.
|
||||||
|
// $FlowFixMe
|
||||||
|
Object.defineProperty(file, 'path', {
|
||||||
|
value: result.path,
|
||||||
|
writable: false,
|
||||||
|
});
|
||||||
this.props.onFileChosen(file);
|
this.props.onFileChosen(file);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -233,7 +233,7 @@ function PublishFile(props: Props) {
|
||||||
isTextPost = contentType[1] === 'plain' || contentType[1] === 'markdown';
|
isTextPost = contentType[1] === 'plain' || contentType[1] === 'markdown';
|
||||||
setCurrentFileType(contentType);
|
setCurrentFileType(contentType);
|
||||||
} else if (file.name) {
|
} else if (file.name) {
|
||||||
// If user's machine is missign a valid content type registration
|
// If user's machine is missing a valid content type registration
|
||||||
// for markdown content: text/markdown, file extension will be used instead
|
// for markdown content: text/markdown, file extension will be used instead
|
||||||
const extension = file.name.split('.').pop();
|
const extension = file.name.split('.').pop();
|
||||||
isTextPost = MARKDOWN_FILE_EXTENSIONS.includes(extension);
|
isTextPost = MARKDOWN_FILE_EXTENSIONS.includes(extension);
|
||||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -11549,6 +11549,7 @@ __metadata:
|
||||||
lodash-es: ^4.17.21
|
lodash-es: ^4.17.21
|
||||||
mammoth: ^1.4.16
|
mammoth: ^1.4.16
|
||||||
match-sorter: ^6.3.0
|
match-sorter: ^6.3.0
|
||||||
|
mime: ^3.0.0
|
||||||
moment: ^2.29.2
|
moment: ^2.29.2
|
||||||
node-abi: ^2.5.1
|
node-abi: ^2.5.1
|
||||||
node-fetch: ^2.6.7
|
node-fetch: ^2.6.7
|
||||||
|
@ -12576,6 +12577,15 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"mime@npm:^3.0.0":
|
||||||
|
version: 3.0.0
|
||||||
|
resolution: "mime@npm:3.0.0"
|
||||||
|
bin:
|
||||||
|
mime: cli.js
|
||||||
|
checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"mimic-fn@npm:^1.0.0":
|
"mimic-fn@npm:^1.0.0":
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
resolution: "mimic-fn@npm:1.2.0"
|
resolution: "mimic-fn@npm:1.2.0"
|
||||||
|
|
Loading…
Reference in a new issue