diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index 2fcc61cc..ed51a52e 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -896,33 +896,32 @@ class NoteList extends React.Component { } // Add notes to the current folder - addNotesFromFiles (filepaths) { - const { dispatch, location } = this.props - const { storage, folder } = this.resolveTargetFolder() + addNotesFromFiles (filepaths) { + const { dispatch, location } = this.props + const { storage, folder } = this.resolveTargetFolder() - if (filepaths === undefined) return - filepaths.forEach((filepath) => { - fs.readFile(filepath, (err, data) => { - if (err) throw Error('File reading error: ', err) + if (filepaths === undefined) return + filepaths.forEach((filepath) => { + fs.readFile(filepath, (err, data) => { + if (err) throw Error('File reading error: ', err) - fs.stat(filepath, (err, {mtime, birthtime}) => { - if (err) throw Error('File stat reading error: ', err) + fs.stat(filepath, (err, {mtime, birthtime}) => { + if (err) throw Error('File stat reading error: ', err) - const content = data.toString() - const newNote = { - content: content, - folder: folder.key, - title: path.basename(filepath, path.extname(filepath)), - type: 'MARKDOWN_NOTE', - createdAt: birthtime, - updatedAt: mtime - } - dataApi.createNote(storage.key, newNote) - .then((note) => { - - attachmentManagement.importAttachments(note.content, filepath, storage.key, note.key) - .then((newcontent) => { - note.content = newcontent; + const content = data.toString() + const newNote = { + content: content, + folder: folder.key, + title: path.basename(filepath, path.extname(filepath)), + type: 'MARKDOWN_NOTE', + createdAt: birthtime, + updatedAt: mtime + } + dataApi.createNote(storage.key, newNote) + .then((note) => { + attachmentManagement.importAttachments(note.content, filepath, storage.key, note.key) + .then((newcontent) => { + note.content = newcontent dispatch({ type: 'UPDATE_NOTE', @@ -932,13 +931,12 @@ class NoteList extends React.Component { pathname: location.pathname, query: {key: getNoteKey(note)} }) - + }) }) }) }) }) - }) -} + } getTargetIndex () { const { location } = this.props diff --git a/browser/main/lib/dataApi/attachmentManagement.js b/browser/main/lib/dataApi/attachmentManagement.js index c6e7c7a9..af760e47 100644 --- a/browser/main/lib/dataApi/attachmentManagement.js +++ b/browser/main/lib/dataApi/attachmentManagement.js @@ -458,33 +458,27 @@ function getAbsolutePathsOfAttachmentsInContent (markdownContent, storagePath) { */ function importAttachments (markDownContent, filepath, storageKey, noteKey) { return new Promise((resolve, reject) => { - let attach_names = markDownContent.match(/!\[.+?]\((?:.+?\..+?\))/g); + const nameRegex = /(!\[.+?]\()(.+?\..+?)(\))/g + let attachName = nameRegex.exec(markDownContent) + const promiseArray = [] + const beginPath = filepath.match(/\/.+\//)[0] + const endPath = [] + const groupIndex = 2 - if (!attach_names) - resolve(markDownContent); - - else { - let promise_array = []; - let end_path = [] - - for (let i = 0; i < attach_names.length; i++){ - end_path[i] = attach_names[i].match(/(?<=]\()(?:.+?\..+?)(?=\))/)[0]; - let begin_path = filepath.match(/\/.+\//)[0]; - let final_path = path.join(begin_path, end_path[i]); - - promise_array.push(this.copyAttachment(final_path, storageKey, noteKey)); - } - - Promise.all(promise_array).then((file_names) => { - - for (let j = 0; j < file_names.length; j++) { - let new_path = path.join(STORAGE_FOLDER_PLACEHOLDER, noteKey, file_names[j]); - markDownContent = markDownContent.replace(end_path[j], new_path); - } - - resolve(markDownContent); - }) + while (attachName) { + endPath.push(attachName[groupIndex]) + const finalPath = path.join(beginPath, attachName[groupIndex]) + promiseArray.push(this.copyAttachment(finalPath, storageKey, noteKey)) + attachName = nameRegex.exec(markDownContent) } + + Promise.all(promiseArray).then((fileNames) => { + for (let j = 0; j < fileNames.length; j++) { + const newPath = path.join(STORAGE_FOLDER_PLACEHOLDER, noteKey, fileNames[j]) + markDownContent = markDownContent.replace(endPath[j], newPath) + } + resolve(markDownContent) + }) }) }