From cdfb573ecb48944781ac71feb0389e6b4cae6eac Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 20 May 2026 16:54:06 +0200 Subject: [PATCH] fix(translate): use assistant app dialog No need for a custom translate dialog these days given that the assistant app provides one. Fixes: #8036 Signed-off-by: Jonas --- cypress/e2e/Assistant.spec.js | 7 +- lib/Service/InitialStateProvider.php | 9 +- src/components/Editor.vue | 37 --- src/components/Menu/AssistantAction.vue | 60 ++++- src/components/Modal/Translate.vue | 344 ------------------------ 5 files changed, 54 insertions(+), 403 deletions(-) delete mode 100644 src/components/Modal/Translate.vue diff --git a/cypress/e2e/Assistant.spec.js b/cypress/e2e/Assistant.spec.js index 6baa32cc842..f6797598b88 100644 --- a/cypress/e2e/Assistant.spec.js +++ b/cypress/e2e/Assistant.spec.js @@ -81,9 +81,10 @@ describe('Assistant', () => { // eslint-disable-next-line cypress/no-unnecessary-waiting cy.wait(1000) - cy.get('[data-cy="translate-input"]').should('be.visible').focus() + cy.get('.assistant-modal--content #input-input').type('Hello World', { + force: true, + }) - cy.get('[data-cy="translate-input"]').should('be.focused') - cy.get('[data-cy="translate-input"]').type('Hello World') + cy.get('.assistant-modal--content button').contains('Translate').click() }) }) diff --git a/lib/Service/InitialStateProvider.php b/lib/Service/InitialStateProvider.php index b0305965d49..20c0ef2a4f0 100644 --- a/lib/Service/InitialStateProvider.php +++ b/lib/Service/InitialStateProvider.php @@ -56,15 +56,10 @@ public function provideState(): void { ); $taskTypes = $this->taskProcessingManager->getAvailableTaskTypes(); - $fromLanguages = $taskTypes['core:text2text:translate']['inputShapeEnumValues']['origin_language'] ?? []; - $toLanguages = $taskTypes['core:text2text:translate']['inputShapeEnumValues']['target_language'] ?? []; $this->initialState->provideInitialState( - 'translation_languages', - [ - 'from' => $fromLanguages, - 'to' => $toLanguages, - ] + 'translation_available', + isset($taskTypes['core:text2text:translate']), ); $filteredTypes = array_filter($taskTypes, static function (string $taskType) { diff --git a/src/components/Editor.vue b/src/components/Editor.vue index d52c8687894..14fb419ab07 100644 --- a/src/components/Editor.vue +++ b/src/components/Editor.vue @@ -74,13 +74,6 @@ :has-connection-issue="displayConnectionIssue" :has-indexed-db-conflict="!!indexedDbConflictContent" @reconnect="reconnect" /> - @@ -140,7 +133,6 @@ import MainContainer from './Editor/MainContainer.vue' import Status from './Editor/Status.vue' import Wrapper from './Editor/Wrapper.vue' import MenuBar from './Menu/MenuBar.vue' -import Translate from './Modal/Translate.vue' import SkeletonLoading from './SkeletonLoading.vue' import SuggestionsBar from './SuggestionsBar.vue' @@ -157,7 +149,6 @@ export default defineComponent({ MenuBar, Reader: () => import('./Reader.vue'), Status, - Translate, SuggestionsBar, }, mixins: [isMobile], @@ -359,8 +350,6 @@ export default defineComponent({ draggedOver: false, contentWrapper: null, - translateModal: false, - translateContent: '', indexedDbConflictContent: '', } }, @@ -475,7 +464,6 @@ export default defineComponent({ subscribe('text:image-node:add', this.onAddImageNode) subscribe('text:image-node:delete', this.onDeleteImageNode) this.emit('update:loaded', true) - subscribe('text:translate-modal:show', this.showTranslateModal) exposeForDebugging(this) await this.whenSynced @@ -511,7 +499,6 @@ export default defineComponent({ unsubscribe('text:keyboard:save', this.onKeyboardSave) unsubscribe('text:image-node:add', this.onAddImageNode) unsubscribe('text:image-node:delete', this.onDeleteImageNode) - unsubscribe('text:translate-modal:show', this.showTranslateModal) if (this.dirty && !this.hasOutdatedDocument && !this.hasSyncCollision) { const timeout = new Promise((resolve) => setTimeout(resolve, 2000)) await Promise.any([timeout, this.saveService.save()]) @@ -884,33 +871,9 @@ export default defineComponent({ this.setEditable(this.editMode) }, - showTranslateModal(e) { - this.translateContent = e.content - this.translateModal = true - }, - hideTranslate() { - this.translateModal = false - }, applyCommand(fn) { this.editor.commands.command(fn) }, - translateInsert(content) { - this.applyCommand(({ tr, commands }) => { - return commands.insertContentAt(tr.selection.to, content) - }) - this.translateModal = false - }, - translateReplace(content) { - this.applyCommand(({ tr, commands }) => { - const selection = tr.selection - const range = { - from: selection.from, - to: selection.to, - } - return commands.insertContentAt(range, content) - }) - this.translateModal = false - }, saveBeforeUnload() { this.saveService.saveViaSendBeacon() diff --git a/src/components/Menu/AssistantAction.vue b/src/components/Menu/AssistantAction.vue index 2ce7382dea4..f0132eefc7a 100644 --- a/src/components/Menu/AssistantAction.vue +++ b/src/components/Menu/AssistantAction.vue @@ -153,7 +153,7 @@ - -