1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-14 02:06:29 +00:00

feat(code-editor): fetch title when pasting url

This commit is contained in:
Georges Indrianjafy
2018-02-04 13:57:00 +02:00
parent 2183c4bda6
commit 9b54272f8e

View File

@@ -226,9 +226,14 @@ export default class CodeEditor extends React.Component {
} }
handlePaste (editor, e) { handlePaste (editor, e) {
const dataTransferItem = e.clipboardData.items[0] const clipboardData = e.clipboardData
if (!dataTransferItem.type.match('image')) return const dataTransferItem = clipboardData.items[0]
const pasteTxt = clipboardData.getData('text')
const isURL = (str) => {
const matcher = /^(?:\w+:)?\/\/([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/
return matcher.test(str)
}
if (dataTransferItem.type.match('image')) {
const blob = dataTransferItem.getAsFile() const blob = dataTransferItem.getAsFile()
const reader = new FileReader() const reader = new FileReader()
let base64data let base64data
@@ -247,6 +252,31 @@ export default class CodeEditor extends React.Component {
const imageMd = `![${imageName}](${path.join('/:storage', `${imageName}.png`)})` const imageMd = `![${imageName}](${path.join('/:storage', `${imageName}.png`)})`
this.insertImageMd(imageMd) this.insertImageMd(imageMd)
} }
} else if (this.props.fetchUrlTitle && isURL(pasteTxt)) {
e.preventDefault()
const taggedUrl = '[' + pasteTxt + ']'
editor.replaceSelection(taggedUrl)
fetch(pasteTxt, {
method: 'get'
}).then((response) => {
return (response.text())
}).then((response) => {
const parsedResponse = (new window.DOMParser()).parseFromString(response, 'text/html')
const value = editor.getValue()
const cursor = editor.getCursor()
const LinkWithTitle = `[${parsedResponse.title}](${pasteTxt})`
const newValue = value.replace(taggedUrl, LinkWithTitle)
editor.setValue(newValue)
editor.setCursor(cursor)
}).catch((e) => {
const value = editor.getValue()
const newValue = value.replace(taggedUrl, pasteTxt)
const cursor = editor.getCursor()
editor.setValue(newValue)
editor.setCursor(cursor)
})
}
} }
render () { render () {