Skip to content

Commit

Permalink
Merge pull request #4246 from SiriusXT/open-note-custom
Browse files Browse the repository at this point in the history
Add openAttachmentCustom
  • Loading branch information
zadam authored Sep 7, 2023
2 parents 55374ac + 0424728 commit 5218f7b
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
6 changes: 3 additions & 3 deletions src/public/app/components/root_command_executor.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@ export default class RootCommandExecutor extends Component {

openNoteExternallyCommand() {
const noteId = appContext.tabManager.getActiveContextNoteId();
const mime = appContext.tabManager.getActiveContextNoteMime()

const mime = appContext.tabManager.getActiveContextNoteMime();
if (noteId) {
openService.openNoteExternally(noteId, mime);
}
}

openNoteCustomCommand() {
const noteId = appContext.tabManager.getActiveContextNoteId();
const mime = appContext.tabManager.getActiveContextNoteMime();
if (noteId) {
openService.openNoteCustom(noteId);
openService.openNoteCustom(noteId, mime);
}
}

Expand Down
16 changes: 11 additions & 5 deletions src/public/app/services/open.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ function downloadAttachment(attachmentId) {
download(url);
}

async function openNoteCustom(noteId) {
async function openCustom(type, entityId, mime) {
checkType(type);
if (!utils.isElectron() || utils.isMac()) {
return;
}

const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`);
const resp = await server.post(`${type}/${entityId}/save-to-tmp-dir`);
let filePath = resp.tmpFilePath;
const {exec} = utils.dynamicRequire('child_process');
const platform = process.platform;
Expand All @@ -71,7 +72,7 @@ async function openNoteCustom(noteId) {
const terminal = terminals[index];
if (!terminal) {
console.error('Open Note custom: No terminal found!');
open(getFileUrl(noteId), {url: true});
open(getFileUrl(entityId), {url: true});
return;
}
exec(`which ${terminal}`, (error, stdout, stderr) => {
Expand All @@ -92,16 +93,20 @@ async function openNoteCustom(noteId) {
exec(command, (err, stdout, stderr) => {
if (err) {
console.error("Open Note custom: ", err);
open(getFileUrl(noteId), {url: true});
open(getFileUrl(entityId), {url: true});
return;
}
});
} else {
console.log('Currently "Open Note custom" only supports linux and windows systems');
open(getFileUrl(noteId), {url: true});
open(getFileUrl(entityId), {url: true});
}
}

const openNoteCustom = async (noteId, mime) => await openCustom('notes', noteId, mime);
const openAttachmentCustom = async (attachmentId, mime) => await openCustom('attachments', attachmentId, mime);


function downloadRevision(noteId, revisionId) {
const url = getUrlForDownload(`api/revisions/${revisionId}/download`);

Expand Down Expand Up @@ -170,4 +175,5 @@ export default {
openNoteExternally,
openAttachmentExternally,
openNoteCustom,
openAttachmentCustom,
}
21 changes: 21 additions & 0 deletions src/public/app/widgets/buttons/attachments_actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import toastService from "../../services/toast.js";
import ws from "../../services/ws.js";
import appContext from "../../components/app_context.js";
import openService from "../../services/open.js";
import utils from "../../services/utils.js";

const TPL = `
<div class="dropdown attachment-actions">
Expand Down Expand Up @@ -32,6 +33,8 @@ const TPL = `
<div class="dropdown-menu dropdown-menu-right">
<a data-trigger-command="openAttachment" class="dropdown-item"
title="File will be open in an external application and watched for changes. You'll then be able to upload the modified version back to Trilium.">Open externally</a>
<a data-trigger-command="openAttachmentCustom" class="dropdown-item"
title="File will be open in an external application and watched for changes. You'll then be able to upload the modified version back to Trilium.">Open custom</a>
<a data-trigger-command="downloadAttachment" class="dropdown-item">Download</a>
<a data-trigger-command="renameAttachment" class="dropdown-item">Rename attachment</a>
<a data-trigger-command="uploadNewAttachmentRevision" class="dropdown-item">Upload new revision</a>
Expand Down Expand Up @@ -82,13 +85,31 @@ export default class AttachmentActionsWidget extends BasicWidget {
.append($('<span class="disabled-tooltip"> (?)</span>')
.attr("title", "Opening attachment externally is available only from the detail page, please first click on the attachment detail first and repeat the action.")
);
const $openAttachmentCustomButton = this.$widget.find("[data-trigger-command='openAttachmentCustom']");
$openAttachmentCustomButton
.addClass("disabled")
.append($('<span class="disabled-tooltip"> (?)</span>')
.attr("title", "Opening attachment externally is available only from the detail page, please first click on the attachment detail first and repeat the action.")
);
}
if (!utils.isElectron()){
const $openAttachmentCustomButton = this.$widget.find("[data-trigger-command='openAttachmentCustom']");
$openAttachmentCustomButton
.addClass("disabled")
.append($('<span class="disabled-tooltip"> (?)</span>')
.attr("title", "Custom opening of attachments can only be done from the client.")
);
}
}

async openAttachmentCommand() {
await openService.openAttachmentExternally(this.attachmentId, this.attachment.mime);
}

async openAttachmentCustomCommand() {
await openService.openAttachmentCustom(this.attachmentId, this.attachment.mime);
}

async downloadAttachmentCommand() {
await openService.downloadAttachment(this.attachmentId);
}
Expand Down

0 comments on commit 5218f7b

Please sign in to comment.