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