mirror of
https://github.com/laurent22/joplin.git
synced 2026-10-25 02:47:28 +00:00
Desktop: Add reveal in notebook option (#16354)
This commit is contained in:
1 parent
c27de4f34e
commit
f4069b5f02
6 files changed
+47
No files matched your search
@@ -549,6 +549,7 @@ packages/app-desktop/gui/WindowCommandsAndDialogs/commands/renameTag.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/resetLayout.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/restoreFolder.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/restoreNote.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/revealInNotebook.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/revealResourceFile.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/search.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/setTags.js
|
||||
|
||||
@@ -575,6 +575,7 @@ packages/app-desktop/gui/WindowCommandsAndDialogs/commands/renameTag.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/resetLayout.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/restoreFolder.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/restoreNote.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/revealInNotebook.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/revealResourceFile.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/search.js
|
||||
packages/app-desktop/gui/WindowCommandsAndDialogs/commands/setTags.js
|
||||
|
||||
@@ -877,6 +877,7 @@ function useMenu(props: Props) {
|
||||
separator(),
|
||||
menuItemDic.showNoteProperties,
|
||||
menuItemDic.showNoteContentProperties,
|
||||
menuItemDic.revealInNotebook,
|
||||
separator(),
|
||||
menuItemDic.permanentlyDeleteNote,
|
||||
],
|
||||
|
||||
@@ -33,6 +33,7 @@ import * as renameTag from './renameTag';
|
||||
import * as resetLayout from './resetLayout';
|
||||
import * as restoreFolder from './restoreFolder';
|
||||
import * as restoreNote from './restoreNote';
|
||||
import * as revealInNotebook from './revealInNotebook';
|
||||
import * as revealResourceFile from './revealResourceFile';
|
||||
import * as search from './search';
|
||||
import * as setTags from './setTags';
|
||||
@@ -92,6 +93,7 @@ const index: any[] = [
|
||||
resetLayout,
|
||||
restoreFolder,
|
||||
restoreNote,
|
||||
revealInNotebook,
|
||||
revealResourceFile,
|
||||
search,
|
||||
setTags,
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import CommandService, { CommandRuntime, CommandDeclaration, CommandContext } from '@joplin/lib/services/CommandService';
|
||||
import { _ } from '@joplin/lib/locale';
|
||||
import Folder from '@joplin/lib/models/Folder';
|
||||
import Note from '@joplin/lib/models/Note';
|
||||
import { defaultWindowId, stateUtils } from '@joplin/lib/reducer';
|
||||
import { getDisplayParentId } from '@joplin/lib/services/trash';
|
||||
import bridge from '../../../services/bridge';
|
||||
|
||||
export const declaration: CommandDeclaration = {
|
||||
name: 'revealInNotebook',
|
||||
label: () => _('Reveal in notebook'),
|
||||
};
|
||||
|
||||
export const runtime = (): CommandRuntime => {
|
||||
return {
|
||||
execute: async (context: CommandContext, noteId: string = null) => {
|
||||
noteId = noteId || stateUtils.selectedNoteId(context.state);
|
||||
const note = await Note.load(noteId);
|
||||
if (!note) throw new Error(`No such note: ${noteId}`);
|
||||
const parentFolder = await Folder.load(note.parent_id);
|
||||
const folderId = note.is_conflict && !note.deleted_time ? Folder.conflictFolderId() : getDisplayParentId(note, parentFolder);
|
||||
const mainWindowState = stateUtils.windowStateById(context.state, defaultWindowId);
|
||||
const folderAlreadySelected = mainWindowState.selectedFolderId === folderId;
|
||||
const noteAlreadySelected = stateUtils.selectedNoteId(mainWindowState) === note.id;
|
||||
|
||||
context.dispatch({
|
||||
type: 'WINDOW_FOCUS',
|
||||
windowId: defaultWindowId,
|
||||
});
|
||||
context.dispatch({
|
||||
type: 'FOLDER_AND_NOTE_SELECT',
|
||||
folderId,
|
||||
noteId: note.id,
|
||||
});
|
||||
bridge().switchToMainWindow();
|
||||
if (folderAlreadySelected) await CommandService.instance().execute('focusElementSideBar');
|
||||
if (folderAlreadySelected && noteAlreadySelected) await CommandService.instance().execute('focusElementNoteList', note.id);
|
||||
},
|
||||
enabledCondition: 'someNotesSelected && !multipleNotesSelected',
|
||||
};
|
||||
};
|
||||
@@ -80,6 +80,7 @@ export default function() {
|
||||
'exportDeletionLog',
|
||||
'toggleSafeMode',
|
||||
'showShareNoteDialog',
|
||||
'revealInNotebook',
|
||||
'showShareFolderDialog',
|
||||
'leaveSharedFolder',
|
||||
'gotoAnything',
|
||||
|
||||
Reference in new issue
Block a user