From 8497bd72993ed1f4db1a75118f10fd08433cd16e Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Fri, 12 May 2023 15:15:25 +0200 Subject: [PATCH 1/3] create MessageTranslateDialog.vue, connect API Signed-off-by: Maksim Sukharev --- src/components/ChatView.vue | 2 + .../MessagesGroup/Message/Message.vue | 18 +- .../MessageButtonsBar/MessageButtonsBar.vue | 18 +- .../MessageTranslateDialog.vue | 295 ++++++++++++++++++ src/services/messagesService.js | 14 + src/store/messagesStore.js | 33 ++ 6 files changed, 378 insertions(+), 2 deletions(-) create mode 100644 src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageTranslateDialog.vue diff --git a/src/components/ChatView.vue b/src/components/ChatView.vue index 480dbca19e1..7e63f5c3ee4 100644 --- a/src/components/ChatView.vue +++ b/src/components/ChatView.vue @@ -108,6 +108,8 @@ export default { mounted() { // Postpone render of NewMessageForm until application is mounted this.containerId = this.$store.getters.getMainContainerSelector() + + this.$store.dispatch('getTranslationConfiguration') }, methods: { diff --git a/src/components/MessagesList/MessagesGroup/Message/Message.vue b/src/components/MessagesList/MessagesGroup/Message/Message.vue index 1e8fd149b3e..41346ca2dde 100644 --- a/src/components/MessagesList/MessagesGroup/Message/Message.vue +++ b/src/components/MessagesList/MessagesGroup/Message/Message.vue @@ -179,6 +179,7 @@ the main body of the message as well as a quote.
+ +
@@ -225,6 +232,7 @@ import NcRichText from '@nextcloud/vue/dist/Components/NcRichText.js' import Quote from '../../../Quote.vue' import CallButton from '../../../TopBar/CallButton.vue' import MessageButtonsBar from './MessageButtonsBar/MessageButtonsBar.vue' +import MessageTranslateDialog from './MessageButtonsBar/MessageTranslateDialog.vue' import Contact from './MessagePart/Contact.vue' import DeckCard from './MessagePart/DeckCard.vue' import DefaultParameter from './MessagePart/DefaultParameter.vue' @@ -245,6 +253,7 @@ export default { name: 'Message', components: { + MessageTranslateDialog, CallButton, MessageButtonsBar, NcButton, @@ -422,6 +431,7 @@ export default { isReactionsMenuOpen: false, isForwarderOpen: false, detailedReactionsLoading: false, + isTranslateDialogOpen: false, } }, @@ -580,7 +590,9 @@ export default { }, showMessageButtonsBar() { - return !this.isSystemMessage && !this.isDeletedMessage && !this.isTemporary && (this.isHovered || this.isActionMenuOpen || this.isEmojiPickerOpen || this.isFollowUpEmojiPickerOpen || this.isReactionsMenuOpen || this.isForwarderOpen) + return !this.isSystemMessage && !this.isDeletedMessage && !this.isTemporary + && (this.isHovered || this.isActionMenuOpen || this.isEmojiPickerOpen || this.isFollowUpEmojiPickerOpen + || this.isReactionsMenuOpen || this.isForwarderOpen || this.isTranslateDialogOpen) }, isTemporaryUpload() { @@ -650,6 +662,10 @@ export default { detailedReactionsLoaded() { return this.$store.getters.reactionsLoaded(this.token, this.id) }, + + isTranslationAvailable() { + return this.$store.getters.getTranslationAvailableLanguages()?.length !== 0 + }, }, watch: { diff --git a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue index 49e08d0ae81..354987c1148 100644 --- a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue +++ b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue @@ -106,6 +106,15 @@ @click="action.callback(messageApiData)"> {{ action.label }} + + + {{ t('spreed', 'Translate') }} +
@@ -107,7 +107,7 @@ export default { }, props: { - text: { + message: { type: String, required: true, }, @@ -223,11 +223,11 @@ export default { async translateMessage(sourceLanguage = null) { try { this.isLoading = true - const response = await translateText(this.text, sourceLanguage, this.selectedTo?.id) + const response = await translateText(this.message, sourceLanguage, this.selectedTo?.id) this.translatedMessage = response.data.ocs.data.text } catch (error) { console.error(error) - showError(t('spreed', 'The message could not be translated')) + showError(error.response?.data?.ocs?.data?.message ?? t('spreed', 'The message could not be translated')) } finally { this.isLoading = false } @@ -253,13 +253,13 @@ export default { flex-direction: column; min-height: 400px; padding: calc(var(--default-grid-baseline) * 3); + background-color: var(--color-main-background); &__wrapper { display: flex; align-items: center; gap: calc(var(--default-grid-baseline) * 4); padding: calc(var(--default-grid-baseline) * 2); - border-bottom: 1px solid var(--color-border); } & &__select { @@ -274,15 +274,16 @@ export default { &__message { padding: calc(var(--default-grid-baseline) * 2); flex-grow: 1; + border-radius: var(--border-radius-large); &-source { color: var(--color-text-lighter); margin-bottom: calc(var(--default-grid-baseline) * 2); + border: 2px solid var(--color-border); } &-translation { - background-color: var(--color-background-dark); - border-radius: var(--border-radius-large); + border: 2px solid var(--color-primary-element); } }