diff --git a/src/services/export/tar.js b/src/services/export/tar.js index 984aeebd7..e2aa1dd28 100644 --- a/src/services/export/tar.js +++ b/src/services/export/tar.js @@ -46,24 +46,32 @@ async function exportToTar(exportContext, branch, format, res) { } function getDataFileName(note, baseFileName, existingFileNames) { - let extension; + const existingExtension = path.extname(baseFileName).toLowerCase(); + let newExtension; + // following two are handled specifically since we always want to have these extensions no matter the automatic detection + // and/or existing detected extensions in the note name if (note.type === 'text' && format === 'markdown') { - extension = 'md'; + newExtension = 'md'; + } + else if (note.type === 'text' && format === 'html') { + newExtension = 'html'; } else if (note.mime === 'application/x-javascript' || note.mime === 'text/javascript') { - extension = 'js'; + newExtension = 'js'; + } + else if (existingExtension.length > 0) { // if the page already has an extension, then we'll just keep it + newExtension = null; } else { - extension = mimeTypes.extension(note.mime) || "dat"; + newExtension = mimeTypes.extension(note.mime) || "dat"; } let fileName = baseFileName; - const existingExtension = path.extname(fileName).toLowerCase(); // if the note is already named with extension (e.g. "jquery.js"), then it's silly to append exact same extension again - if (existingExtension !== "." + extension) { - fileName += "." + extension; + if (newExtension && existingExtension !== "." + newExtension.toLowerCase()) { + fileName += "." + newExtension; } return getUniqueFilename(existingFileNames, fileName);