2024-03-11 17:02:15 +02:00
|
|
|
import Setting from '@joplin/lib/models/Setting';
|
|
|
|
import CommandService, { CommandDeclaration, CommandRuntime } from '@joplin/lib/services/CommandService';
|
|
|
|
import stateToWhenClauseContext from '@joplin/lib/services/commands/stateToWhenClauseContext';
|
|
|
|
import { AppState } from './types';
|
|
|
|
import { Store } from 'redux';
|
|
|
|
import editorCommandDeclarations from '../components/NoteEditor/commandDeclarations';
|
2024-03-14 21:04:32 +02:00
|
|
|
import globalCommands from '../commands';
|
2024-03-11 17:02:15 +02:00
|
|
|
import libCommands from '@joplin/lib/commands';
|
|
|
|
|
|
|
|
interface CommandSpecification {
|
|
|
|
declaration: CommandDeclaration;
|
|
|
|
runtime: ()=> CommandRuntime;
|
|
|
|
}
|
|
|
|
|
|
|
|
const registerCommands = (commands: CommandSpecification[]) => {
|
|
|
|
for (const command of commands) {
|
|
|
|
CommandService.instance().registerDeclaration(command.declaration);
|
|
|
|
CommandService.instance().registerRuntime(command.declaration.name, command.runtime());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2024-04-05 13:16:49 +02:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
2024-03-11 17:02:15 +02:00
|
|
|
const initializeCommandService = (store: Store<AppState, any>) => {
|
|
|
|
CommandService.instance().initialize(store, Setting.value('env') === 'dev', stateToWhenClauseContext);
|
|
|
|
for (const declaration of editorCommandDeclarations) {
|
|
|
|
CommandService.instance().registerDeclaration(declaration);
|
|
|
|
}
|
2024-03-14 21:04:32 +02:00
|
|
|
registerCommands(globalCommands);
|
2024-03-11 17:02:15 +02:00
|
|
|
registerCommands(libCommands);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default initializeCommandService;
|