import server from "./server.js"; import utils from "./utils.js"; import renderService from "./render.js"; import protectedSessionService from "./protected_session.js"; import protectedSessionHolder from "./protected_session_holder.js"; async function getRenderedContent(note) { const type = getRenderingType(note); let $rendered; if (type === 'text') { const fullNote = await server.get('notes/' + note.noteId); $rendered = $('
").text(fullNote.content);
}
else if (type === 'image') {
$rendered = $("
")
.attr("src", `api/images/${note.noteId}/${note.title}`)
.css("max-width", "100%");
}
else if (type === 'file') {
function getFileUrl() {
return utils.getUrlForDownload("api/notes/" + note.noteId + "/download");
}
const $downloadButton = $('');
const $openButton = $('');
$downloadButton.on('click', () => utils.download(getFileUrl()));
$openButton.on('click', () => {
if (utils.isElectron()) {
const open = require("open");
open(getFileUrl(), {url: true});
}
else {
window.location.href = getFileUrl();
}
});
// open doesn't work for protected notes since it works through browser which isn't in protected session
$openButton.toggle(!note.isProtected);
$rendered = $('');
if (note.mime === 'application/pdf' && utils.isElectron()) {
const $pdfPreview = $('');
$pdfPreview.attr("src", utils.getUrlForDownload("api/notes/" + note.noteId + "/open"));
$rendered.append($pdfPreview);
}
$rendered
.append($downloadButton)
.append(' ')
.append($openButton);
}
else if (type === 'render') {
$rendered = $('');
await renderService.render(note, $rendered, this.ctx);
}
else if (type === 'protected-session') {
const $button = $(``)
.on('click', protectedSessionService.enterProtectedSession);
$rendered = $("")
.append("This note is protected and to access it you need to enter password.")
.append("
")
.append($button);
}
else {
$rendered = $("Content of this note cannot be displayed in the book format");
}
$rendered.addClass(note.getCssClass());
return {
renderedContent: $rendered,
type
};
}
function getRenderingType(note) {
let type = note.type;
if (note.isProtected) {
if (protectedSessionHolder.isProtectedSessionAvailable()) {
protectedSessionHolder.touchProtectedSession();
}
else {
type = 'protected-session';
}
}
return type;
}
export default {
getRenderedContent
};