mirror of
https://github.com/memodack/memodack.git
synced 2026-07-22 11:50:25 +00:00
feat: add TranslateCommandService
This commit is contained in:
parent
a706fd54ad
commit
b7d7bcdff9
1 changed files with 32 additions and 0 deletions
32
src/translate-command.service.ts
Normal file
32
src/translate-command.service.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { Command, Editor } from 'obsidian';
|
||||
|
||||
import { IActionsService } from './actions.service';
|
||||
import { ITranslationService } from './translation.service';
|
||||
|
||||
export class TranslateCommandService implements Command {
|
||||
id = 'translate';
|
||||
name = 'Translate';
|
||||
|
||||
private translationService: ITranslationService;
|
||||
private actionService: IActionsService;
|
||||
|
||||
constructor(
|
||||
translationService: ITranslationService,
|
||||
actionService: IActionsService,
|
||||
) {
|
||||
this.translationService = translationService;
|
||||
this.actionService = actionService;
|
||||
}
|
||||
|
||||
async editorCallback(editor: Editor): Promise<void> {
|
||||
const selection = editor.getSelection();
|
||||
const translation = await this.translationService.translate(selection);
|
||||
|
||||
if (!translation) {
|
||||
return;
|
||||
}
|
||||
|
||||
editor.replaceSelection(`{${selection}|${translation}}`);
|
||||
await this.actionService.playValueAndTranslation(selection, translation);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue