mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +08:00 
			
		
		
		
	cleanup note open custom
This commit is contained in:
		
							parent
							
								
									bd8429a0ba
								
							
						
					
					
						commit
						88a961180f
					
				| @ -57,10 +57,8 @@ export default class RootCommandExecutor extends Component { | |||||||
| 
 | 
 | ||||||
|     openNoteCustomCommand() { |     openNoteCustomCommand() { | ||||||
|         const noteId = appContext.tabManager.getActiveContextNoteId(); |         const noteId = appContext.tabManager.getActiveContextNoteId(); | ||||||
|         const mime = appContext.tabManager.getActiveContextNoteMime() |  | ||||||
| 
 |  | ||||||
|         if (noteId) { |         if (noteId) { | ||||||
|             openService.openNoteCustom(noteId, mime); |             openService.openNoteCustom(noteId); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -47,61 +47,66 @@ async function openNoteExternally(noteId, mime) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function openNoteCustom(noteId, mime) { | async function openNoteCustom(noteId) { | ||||||
|     if (utils.isElectron()) { |     if (!utils.isElectron() || utils.isMac()) { | ||||||
|       const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`); |         return; | ||||||
|       const filePath = resp.tmpFilePath; |     } | ||||||
|       const { exec } = utils.dynamicRequire('child_process'); | 
 | ||||||
|       const platform = process.platform; |     const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`); | ||||||
|       if (platform === 'linux') {         |     let filePath = resp.tmpFilePath; | ||||||
|         const terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal', 'mate-terminal', 'rxvt', 'terminator', 'terminology']; |     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 openFileWithTerminal = (terminal) => { | ||||||
|           const command = `${terminal} -e 'mimeopen -d "${filePath}"'`; |             const command = `${terminal} -e 'mimeopen -d "${filePath}"'`; | ||||||
|           console.log(`Open Note custom: ${command} `); |             console.log(`Open Note custom: ${command} `); | ||||||
|           exec(command, (error, stdout, stderr) => { |             exec(command, (error, stdout, stderr) => { | ||||||
|             if (error) { |                 if (error) { | ||||||
|               console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`); |                     console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`); | ||||||
|               searchTerminal(terminals.indexOf(terminal) + 1); |                     searchTerminal(terminals.indexOf(terminal) + 1); | ||||||
|             } else { |                 } else { | ||||||
|               console.log(`Open Note custom: File opened with ${terminal}. ${stdout}`); |                     console.log(`Open Note custom: File opened with ${terminal}: ${stdout}`); | ||||||
|             } |                 } | ||||||
|           }); |             }); | ||||||
|         }; |         }; | ||||||
|  | 
 | ||||||
|         const searchTerminal = (index) => { |         const searchTerminal = (index) => { | ||||||
|           const terminal = terminals[index]; |             const terminal = terminals[index]; | ||||||
|           if (!terminal) { |             if (!terminal) { | ||||||
|             console.error('Open Note custom: No terminal found!'); |                 console.error('Open Note custom: No terminal found!'); | ||||||
|             open(getFileUrl(noteId), { url: true }); |                 open(getFileUrl(noteId), {url: true}); | ||||||
|             return; |                 return; | ||||||
|           } |  | ||||||
|           exec(`which ${terminal}`, (error, stdout, stderr) => { |  | ||||||
|             if (stdout.trim()) { |  | ||||||
|               openFileWithTerminal(terminal); |  | ||||||
|             } else { |  | ||||||
|               searchTerminal(index + 1); |  | ||||||
|             } |             } | ||||||
|           }); |             exec(`which ${terminal}`, (error, stdout, stderr) => { | ||||||
|  |                 if (stdout.trim()) { | ||||||
|  |                     openFileWithTerminal(terminal); | ||||||
|  |                 } else { | ||||||
|  |                     searchTerminal(index + 1); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|         }; |         }; | ||||||
|         searchTerminal(0); |         searchTerminal(0); | ||||||
|       } else if (platform === 'win32') { |     } else if (platform === 'win32') { | ||||||
|         if (filePath.indexOf("/") !== -1) { |         if (filePath.indexOf("/") !== -1) { | ||||||
|           //Note that the path separator must be \ instead of /
 |             // Note that the path separator must be \ instead of /
 | ||||||
|           filePath = filePath.replace(/\//g, "\\"); |             filePath = filePath.replace(/\//g, "\\"); | ||||||
|         } |         } | ||||||
|         const command = `rundll32.exe shell32.dll,OpenAs_RunDLL ` + filePath; |         const command = `rundll32.exe shell32.dll,OpenAs_RunDLL ` + filePath; | ||||||
|         exec(command, (err, stdout, stderr) => { |         exec(command, (err, stdout, stderr) => { | ||||||
|           if (err) { |             if (err) { | ||||||
|             console.error("Open Note custom: ", err); |                 console.error("Open Note custom: ", err); | ||||||
|             open(getFileUrl(noteId), { url: true }); |                 open(getFileUrl(noteId), {url: true}); | ||||||
|             return; |                 return; | ||||||
|           } |             } | ||||||
|         }); |         }); | ||||||
|       } else { |     } else { | ||||||
|         console.log('Currently "Open Note custom" only supports linux and windows systems'); |         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) { | function downloadNoteRevision(noteId, noteRevisionId) { | ||||||
|     const url = getUrlForDownload(`api/notes/${noteId}/revisions/${noteRevisionId}/download`); |     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="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="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="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 import-files-button">Import files</a> | ||||||
|         <a class="dropdown-item export-note-button">Export note</a> |         <a class="dropdown-item export-note-button">Export note</a> | ||||||
|         <a class="dropdown-item delete-note-button">Delete 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.$renderNoteButton.toggle(note.type === 'render'); | ||||||
| 
 | 
 | ||||||
|         this.$openNoteExternallyButton.toggle(utils.isElectron()); |         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) { |     toggleDisabled($el, enable) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam