mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
import utils from "./utils.js";
|
|
import server from "./server.js";
|
|
|
|
function getFileUrl(noteId) {
|
|
return getUrlForDownload("api/notes/" + noteId + "/download");
|
|
}
|
|
|
|
function download(url) {
|
|
if (utils.isElectron()) {
|
|
const remote = utils.dynamicRequire('electron').remote;
|
|
|
|
remote.getCurrentWebContents().downloadURL(url);
|
|
} else {
|
|
window.location.href = url;
|
|
}
|
|
}
|
|
|
|
function downloadFileNote(noteId) {
|
|
const url = getFileUrl(noteId) + '?' + Date.now(); // don't use cache
|
|
|
|
download(url);
|
|
}
|
|
|
|
async function openFileNote(noteId) {
|
|
if (utils.isElectron()) {
|
|
const resp = await server.post("notes/" + noteId + "/saveToTmpDir");
|
|
|
|
const electron = utils.dynamicRequire('electron');
|
|
const res = await electron.shell.openPath(resp.tmpFilePath);
|
|
|
|
if (res) {
|
|
// fallback in case there's no default application for this file
|
|
open(getFileUrl(noteId), {url: true});
|
|
}
|
|
}
|
|
else {
|
|
window.location.href = getFileUrl(noteId);
|
|
}
|
|
}
|
|
|
|
function downloadNoteRevision(noteId, noteRevisionId) {
|
|
const url = getUrlForDownload(`api/notes/${noteId}/revisions/${noteRevisionId}/download`);
|
|
|
|
download(url);
|
|
}
|
|
|
|
/**
|
|
* @param url - should be without initial slash!!!
|
|
*/
|
|
function getUrlForDownload(url) {
|
|
if (utils.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;
|
|
}
|
|
}
|
|
|
|
function getHost() {
|
|
const url = new URL(window.location.href);
|
|
return url.protocol + "//" + url.hostname + ":" + url.port;
|
|
}
|
|
|
|
export default {
|
|
download,
|
|
downloadFileNote,
|
|
openFileNote,
|
|
downloadNoteRevision,
|
|
getUrlForDownload
|
|
}
|