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 = utils.dynamicRequire("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 };