mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	cleanup note open custom
This commit is contained in:
		| @@ -54,13 +54,11 @@ export default class RootCommandExecutor extends Component { | ||||
|             openService.openNoteExternally(noteId, mime); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|  | ||||
|     openNoteCustomCommand() { | ||||
|         const noteId = appContext.tabManager.getActiveContextNoteId(); | ||||
|         const mime = appContext.tabManager.getActiveContextNoteMime() | ||||
|  | ||||
|         if (noteId) { | ||||
|             openService.openNoteCustom(noteId, mime); | ||||
|             openService.openNoteCustom(noteId); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -47,61 +47,66 @@ async function openNoteExternally(noteId, mime) { | ||||
|     } | ||||
| } | ||||
|  | ||||
| async function openNoteCustom(noteId, mime) { | ||||
|     if (utils.isElectron()) { | ||||
|       const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`); | ||||
|       const filePath = resp.tmpFilePath; | ||||
|       const { exec } = utils.dynamicRequire('child_process'); | ||||
|       const platform = process.platform; | ||||
|       if (platform === 'linux') {         | ||||
|         const terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal', 'mate-terminal', 'rxvt', 'terminator', 'terminology']; | ||||
| async function openNoteCustom(noteId) { | ||||
|     if (!utils.isElectron() || utils.isMac()) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`); | ||||
|     let filePath = resp.tmpFilePath; | ||||
|     const {exec} = utils.dynamicRequire('child_process'); | ||||
|     const platform = process.platform; | ||||
|  | ||||
|     if (platform === 'linux') { | ||||
|         // we don't know which terminal is available, try in succession | ||||
|         const terminals = ['x-terminal-emulator', 'gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal', 'mate-terminal', 'rxvt', 'terminator', 'terminology']; | ||||
|         const openFileWithTerminal = (terminal) => { | ||||
|           const command = `${terminal} -e 'mimeopen -d "${filePath}"'`; | ||||
|           console.log(`Open Note custom: ${command} `); | ||||
|           exec(command, (error, stdout, stderr) => { | ||||
|             if (error) { | ||||
|               console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`); | ||||
|               searchTerminal(terminals.indexOf(terminal) + 1); | ||||
|             } else { | ||||
|               console.log(`Open Note custom: File opened with ${terminal}. ${stdout}`); | ||||
|             } | ||||
|           }); | ||||
|             const command = `${terminal} -e 'mimeopen -d "${filePath}"'`; | ||||
|             console.log(`Open Note custom: ${command} `); | ||||
|             exec(command, (error, stdout, stderr) => { | ||||
|                 if (error) { | ||||
|                     console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`); | ||||
|                     searchTerminal(terminals.indexOf(terminal) + 1); | ||||
|                 } else { | ||||
|                     console.log(`Open Note custom: File opened with ${terminal}: ${stdout}`); | ||||
|                 } | ||||
|             }); | ||||
|         }; | ||||
|  | ||||
|         const searchTerminal = (index) => { | ||||
|           const terminal = terminals[index]; | ||||
|           if (!terminal) { | ||||
|             console.error('Open Note custom: No terminal found!'); | ||||
|             open(getFileUrl(noteId), { url: true }); | ||||
|             return; | ||||
|           } | ||||
|           exec(`which ${terminal}`, (error, stdout, stderr) => { | ||||
|             if (stdout.trim()) { | ||||
|               openFileWithTerminal(terminal); | ||||
|             } else { | ||||
|               searchTerminal(index + 1); | ||||
|             const terminal = terminals[index]; | ||||
|             if (!terminal) { | ||||
|                 console.error('Open Note custom: No terminal found!'); | ||||
|                 open(getFileUrl(noteId), {url: true}); | ||||
|                 return; | ||||
|             } | ||||
|           }); | ||||
|             exec(`which ${terminal}`, (error, stdout, stderr) => { | ||||
|                 if (stdout.trim()) { | ||||
|                     openFileWithTerminal(terminal); | ||||
|                 } else { | ||||
|                     searchTerminal(index + 1); | ||||
|                 } | ||||
|             }); | ||||
|         }; | ||||
|         searchTerminal(0); | ||||
|       } else if (platform === 'win32') { | ||||
|     } else if (platform === 'win32') { | ||||
|         if (filePath.indexOf("/") !== -1) { | ||||
|           //Note that the path separator must be \ instead of / | ||||
|           filePath = filePath.replace(/\//g, "\\"); | ||||
|             // Note that the path separator must be \ instead of / | ||||
|             filePath = filePath.replace(/\//g, "\\"); | ||||
|         } | ||||
|         const command = `rundll32.exe shell32.dll,OpenAs_RunDLL ` + filePath; | ||||
|         exec(command, (err, stdout, stderr) => { | ||||
|           if (err) { | ||||
|             console.error("Open Note custom: ", err); | ||||
|             open(getFileUrl(noteId), { url: true }); | ||||
|             return; | ||||
|           } | ||||
|             if (err) { | ||||
|                 console.error("Open Note custom: ", err); | ||||
|                 open(getFileUrl(noteId), {url: true}); | ||||
|                 return; | ||||
|             } | ||||
|         }); | ||||
|       } else { | ||||
|     } else { | ||||
|         console.log('Currently "Open Note custom" only supports linux and windows systems'); | ||||
|         open(getFileUrl(noteId), { url: true }); | ||||
|       } | ||||
|         open(getFileUrl(noteId), {url: true}); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| function downloadNoteRevision(noteId, noteRevisionId) { | ||||
|     const url = getUrlForDownload(`api/notes/${noteId}/revisions/${noteRevisionId}/download`); | ||||
|   | ||||
| @@ -29,7 +29,7 @@ const TPL = ` | ||||
|         <a data-trigger-command="findInText" class="dropdown-item find-in-text-button">Search in note <kbd data-command="findInText"></a> | ||||
|         <a data-trigger-command="showNoteSource" class="dropdown-item show-source-button"><kbd data-command="showNoteSource"></kbd> Note source</a> | ||||
|         <a data-trigger-command="openNoteExternally" class="dropdown-item open-note-externally-button"><kbd data-command="openNoteExternally"></kbd> Open note externally</a> | ||||
|         <a data-trigger-command="openNoteCustom" class="dropdown-item open-note-custom-button"><kbd data-command="openNoteCustom"></kbd> Open note custom (beta)</a> | ||||
|         <a data-trigger-command="openNoteCustom" class="dropdown-item open-note-custom-button"><kbd data-command="openNoteCustom"></kbd> Open note custom</a> | ||||
|         <a class="dropdown-item import-files-button">Import files</a> | ||||
|         <a class="dropdown-item export-note-button">Export note</a> | ||||
|         <a class="dropdown-item delete-note-button">Delete note</a> | ||||
| @@ -90,7 +90,7 @@ export default class NoteActionsWidget extends NoteContextAwareWidget { | ||||
|         this.$renderNoteButton.toggle(note.type === 'render'); | ||||
|  | ||||
|         this.$openNoteExternallyButton.toggle(utils.isElectron()); | ||||
|         this.$openNoteCustomButton.toggle(utils.isElectron()); | ||||
|         this.$openNoteCustomButton.toggle(utils.isElectron() && !utils.isMac()); // no implementation for Mac yet | ||||
|     } | ||||
|  | ||||
|     toggleDisabled($el, enable) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user