Fix svg attachment issue

This commit is contained in:
Junyoung Choi 2021-03-19 16:20:00 +09:00 committed by Junyoung Choi
parent 20ed45ad91
commit 558ef95c70
4 changed files with 23 additions and 4 deletions

13
package-lock.json generated
View File

@ -17531,6 +17531,11 @@
"resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
"integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
},
"fast-xml-parser": {
"version": "3.19.0",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz",
"integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg=="
},
"fastest-stable-stringify": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
@ -20430,6 +20435,14 @@
"integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
"dev": true
},
"is-svg": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz",
"integrity": "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==",
"requires": {
"fast-xml-parser": "^3.19.0"
}
},
"is-symbol": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",

View File

@ -165,6 +165,7 @@
"idb": "^6.0.0",
"immer": "^8.0.1",
"is-electron": "^2.2.0",
"is-svg": "^4.3.1",
"js-yaml": "^4.0.0",
"ky": "^0.26.0",
"lodash": "^4.17.19",

View File

@ -12,6 +12,7 @@ const filteredJson = {
'read-chunk': '^3.2.0',
'file-type': '^14.6.2',
'cson-parser': '^4.0.5',
'is-svg': '^4.3.1',
got: '^11.8.1',
},
}

View File

@ -10,6 +10,7 @@
const readChunk = require('read-chunk')
const CSON = require('cson-parser')
const got = require('got')
const isSvg = require('is-svg')
function openExternal(url) {
console.log('opening ...', url)
@ -92,17 +93,20 @@
}
async function readFileType(pathname) {
const buffer = readChunk.sync(pathname, 0, 4100)
const buffer = readChunk.sync(pathname, 0, 1024 * 1024)
return readFileTypeFromBuffer(buffer)
}
async function readFileTypeFromBuffer(buffer) {
try {
const result = await FileType.fromBuffer(buffer)
if (result == null) {
throw new Error('Failed to detect file type from the buffer')
if (result != null) {
return result.mime
}
return result.mime
if (isSvg(buffer)) {
return 'image/svg+xml'
}
throw new Error('Failed to detect file type from the buffer')
} catch (error) {
console.warn(error)
return ''