1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-06-27 23:28:38 +02:00

Desktop: Simplified and improve command service, and added command palette

- Commands "enabled" state is now expressed using a "when-clause" like in VSCode
- A command palette has been added to the Tools menu
This commit is contained in:
Laurent Cozic
2020-10-18 21:52:10 +01:00
parent f529adac99
commit 3a57cfea02
78 changed files with 897 additions and 756 deletions

View File

@ -4,27 +4,16 @@ import { _ } from 'lib/locale';
export const declaration:CommandDeclaration = {
name: 'historyBackward',
label: () => _('Back'),
// iconName: 'fa-arrow-left',
iconName: 'icon-back',
};
interface Props {
hasBackwardNotes: boolean,
}
export const runtime = ():CommandRuntime => {
return {
execute: async (props:Props) => {
if (!props.hasBackwardNotes) return;
execute: async () => {
utils.store.dispatch({
type: 'HISTORY_BACKWARD',
});
},
isEnabled: (props:Props) => {
return props.hasBackwardNotes;
},
mapStateToProps: (state:any) => {
return { hasBackwardNotes: state.backwardHistoryNotes.length > 0 };
},
enabledCondition: 'historyhasBackwardNotes',
};
};

View File

@ -7,23 +7,13 @@ export const declaration:CommandDeclaration = {
iconName: 'icon-forward',
};
interface Props {
hasForwardNotes: boolean,
}
export const runtime = ():CommandRuntime => {
return {
execute: async (props:Props) => {
if (!props.hasForwardNotes) return;
execute: async () => {
utils.store.dispatch({
type: 'HISTORY_FORWARD',
});
},
isEnabled: (props:Props) => {
return props.hasForwardNotes;
},
mapStateToProps: (state:any) => {
return { hasForwardNotes: state.forwardHistoryNotes.length > 0 };
},
enabledCondition: 'historyhasForwardNotes',
};
};

View File

@ -1,4 +1,4 @@
import { utils, CommandRuntime, CommandDeclaration } from '../services/CommandService';
import { utils, CommandRuntime, CommandDeclaration, CommandContext } from '../services/CommandService';
import { _ } from 'lib/locale';
const { reg } = require('lib/registry.js');
@ -8,9 +8,11 @@ export const declaration:CommandDeclaration = {
iconName: 'fa-sync-alt',
};
// Note that this command actually acts as a toggle - it starts or cancels
// synchronisation depending on the "syncStarted" parameter
export const runtime = ():CommandRuntime => {
return {
execute: async ({ syncStarted }:any) => {
execute: async (_context:CommandContext, syncStarted:boolean = false) => {
const action = syncStarted ? 'cancel' : 'start';
if (!(await reg.syncTarget().isAuthenticated())) {
@ -43,13 +45,5 @@ export const runtime = ():CommandRuntime => {
return 'sync';
}
},
isEnabled: (props:any) => {
return !props.syncStarted;
},
mapStateToProps: (state:any):any => {
return {
syncStarted: state.syncStarted,
};
},
};
};