From cfb850acb26ee4fef226769c6ddb8b27c9b381b2 Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 22 Nov 2019 20:35:17 +0100 Subject: [PATCH] download fixes for the sub-domain web deployment --- src/public/javascripts/dialogs/export.js | 2 +- .../javascripts/dialogs/note_revisions.js | 4 +++- .../javascripts/services/note_detail_book.js | 3 +-- .../javascripts/services/note_detail_file.js | 3 +-- .../javascripts/services/note_detail_image.js | 3 +-- src/public/javascripts/services/utils.js | 18 ++++++++++++++++-- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/public/javascripts/dialogs/export.js b/src/public/javascripts/dialogs/export.js index 3e8eb396a..fc8b392be 100644 --- a/src/public/javascripts/dialogs/export.js +++ b/src/public/javascripts/dialogs/export.js @@ -74,7 +74,7 @@ $form.on('submit', () => { function exportBranch(branchId, type, format, version) { taskId = utils.randomString(10); - const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}/${version}/${taskId}`; + const url = utils.getUrlForDownload(`api/notes/${branchId}/export/${type}/${format}/${version}/${taskId}`); utils.download(url); } diff --git a/src/public/javascripts/dialogs/note_revisions.js b/src/public/javascripts/dialogs/note_revisions.js index 952ec04d4..8656bfe9b 100644 --- a/src/public/javascripts/dialogs/note_revisions.js +++ b/src/public/javascripts/dialogs/note_revisions.js @@ -102,7 +102,9 @@ async function setContentPane() { const $downloadButton = $(''); $downloadButton.on('click', () => { - utils.download(utils.getHost() + `/api/notes/${revisionItem.noteId}/revisions/${revisionItem.noteRevisionId}/download`); + const url = utils.getUrlForDownload(`api/notes/${revisionItem.noteId}/revisions/${revisionItem.noteRevisionId}/download`); + + utils.download(url); }); $titleButtons.append($downloadButton); diff --git a/src/public/javascripts/services/note_detail_book.js b/src/public/javascripts/services/note_detail_book.js index c4445323d..09ed86bf5 100644 --- a/src/public/javascripts/services/note_detail_book.js +++ b/src/public/javascripts/services/note_detail_book.js @@ -185,8 +185,7 @@ class NoteDetailBook { } else if (type === 'file') { function getFileUrl() { - // electron needs absolute URL so we extract current host, port, protocol - return utils.getHost() + "/api/notes/" + note.noteId + "/download"; + return utils.getUrlForDownload("api/notes/" + note.noteId + "/download"); } const $downloadButton = $(''); diff --git a/src/public/javascripts/services/note_detail_file.js b/src/public/javascripts/services/note_detail_file.js index 9724ac376..0a3dea656 100644 --- a/src/public/javascripts/services/note_detail_file.js +++ b/src/public/javascripts/services/note_detail_file.js @@ -87,8 +87,7 @@ class NoteDetailFile { } getFileUrl() { - // electron needs absolute URL so we extract current host, port, protocol - return utils.getHost() + "/api/notes/" + this.ctx.note.noteId + "/download"; + return utils.getUrlForDownload("api/notes/" + this.ctx.note.noteId + "/download"); } show() {} diff --git a/src/public/javascripts/services/note_detail_image.js b/src/public/javascripts/services/note_detail_image.js index d0baaaa2f..f877dce48 100644 --- a/src/public/javascripts/services/note_detail_image.js +++ b/src/public/javascripts/services/note_detail_image.js @@ -98,8 +98,7 @@ class NoteDetailImage { } getFileUrl() { - // electron needs absolute URL so we extract current host, port, protocol - return utils.getHost() + `/api/notes/${this.ctx.note.noteId}/download`; + return utils.getUrlForDownload(`api/notes/${this.ctx.note.noteId}/download`); } show() {} diff --git a/src/public/javascripts/services/utils.js b/src/public/javascripts/services/utils.js index 1f1560d74..d6c311f14 100644 --- a/src/public/javascripts/services/utils.js +++ b/src/public/javascripts/services/utils.js @@ -214,6 +214,20 @@ async function clearBrowserCache() { } } +/** + * @param url - should be without initial slash!!! + */ +function getUrlForDownload(url) { + if (isElectron()) { + // electron needs absolute URL so we extract current host, port, protocol + return getHost() + '/' + url; + } + else { + // web server can be deployed on subdomain so we need to use relative path + return url; + } +} + export default { reloadApp, parseDate, @@ -230,7 +244,6 @@ export default { escapeHtml, stopWatch, formatLabel, - getHost, download, toObject, randomString, @@ -245,5 +258,6 @@ export default { getMimeTypeClass, closeActiveDialog, isHtmlEmpty, - clearBrowserCache + clearBrowserCache, + getUrlForDownload }; \ No newline at end of file