Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
242 changes: 121 additions & 121 deletions common/config/rush/pnpm-lock.yaml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@
"electron-updater": "^6.3.4",
"livekit-client": "^2.15.6",
"@hcengineering/server-backup": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"ws": "^8.18.2"
},
"productName": "Huly Desktop",
Expand Down
32 changes: 16 additions & 16 deletions dev/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -562,22 +562,22 @@ services:
- QUEUE_CONFIG=${QUEUE_CONFIG}
- QUEUE_REGION=cockroach
restart: unless-stopped
translate:
image: hardcoreeng/translate
extra_hosts:
- 'huly.local:host-gateway'
depends_on:
redpanda:
condition: service_started
account:
condition: service_started
environment:
- SECRET=secret
- ACCOUNTS_URL=http://huly.local:3000
- HULYLAKE_URL=http://huly.local:8096
- QUEUE_CONFIG=${QUEUE_CONFIG}
- QUEUE_REGION=cockroach
restart: unless-stopped
# translate:
# image: hardcoreeng/translate
# extra_hosts:
# - 'huly.local:host-gateway'
# depends_on:
# redpanda:
# condition: service_started
# account:
# condition: service_started
# environment:
# - SECRET=secret
# - ACCOUNTS_URL=http://huly.local:3000
# - HULYLAKE_URL=http://huly.local:8096
# - QUEUE_CONFIG=${QUEUE_CONFIG}
# - QUEUE_REGION=cockroach
# restart: unless-stopped
backup-cockroach:
image: hardcoreeng/backup
extra_hosts:
Expand Down
2 changes: 1 addition & 1 deletion dev/tool/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,6 @@
"@hcengineering/api-client": "^0.7.3",
"@faker-js/faker": "^8.4.1",
"@hcengineering/hulylake-client": "^0.7.3",
"@hcengineering/communication-types": "^0.7.0"
"@hcengineering/communication-types": "^0.7.2"
}
}
1 change: 1 addition & 0 deletions dev/tool/src/communication.ts
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ async function oldMessageToNewMessageDoc (
creator: oldMessage.creator,
created: oldMessage.created.toISOString(),
modified: oldMessage.edited?.toISOString() ?? null,
language: null,
reactions,
attachments,
threads
Expand Down
2 changes: 1 addition & 1 deletion models/communication/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"@hcengineering/card": "^0.7.0",
"@hcengineering/communication": "^0.7.0",
"@hcengineering/communication-resources": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/contact": "^0.7.0",
"@hcengineering/core": "^0.7.3",
"@hcengineering/model": "^0.7.3",
Expand Down
8 changes: 4 additions & 4 deletions packages/presentation/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@
"@hcengineering/client": "^0.7.3",
"@hcengineering/contact": "^0.7.0",
"@hcengineering/collaborator-client": "^0.7.3",
"@hcengineering/communication-client-query": "^0.7.0",
"@hcengineering/communication-sdk-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-shared": "^0.7.0",
"@hcengineering/communication-client-query": "^0.7.2",
"@hcengineering/communication-sdk-types": "^0.7.2",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/communication-shared": "^0.7.2",
"@hcengineering/core": "^0.7.3",
"@hcengineering/diffview": "^0.7.0",
"@hcengineering/notification": "^0.7.0",
Expand Down
2 changes: 1 addition & 1 deletion plugins/activity-resources/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"@hcengineering/ui": "^0.7.0",
"@hcengineering/view": "^0.7.0",
"@hcengineering/view-resources": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/emoji": "^0.7.0",
"@hcengineering/emoji-resources": "^0.7.0",
"svelte": "^4.2.20"
Expand Down
2 changes: 1 addition & 1 deletion plugins/card-resources/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"dependencies": {
"@hcengineering/presence": "^0.7.0",
"@hcengineering/presentation": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/communication-resources": "^0.7.0",
"@hcengineering/core": "^0.7.3",
"@hcengineering/ui": "^0.7.0",
Expand Down
4 changes: 2 additions & 2 deletions plugins/chat-resources/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"@hcengineering/card": "^0.7.0",
"@hcengineering/card-resources": "^0.7.0",
"@hcengineering/chat": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/communication": "^0.7.0",
"@hcengineering/contact": "^0.7.0",
"@hcengineering/contact-resources": "^0.7.0",
Expand All @@ -55,7 +55,7 @@
"@hcengineering/workbench": "^0.7.0",
"@hcengineering/workbench-resources": "^0.7.0",
"@hcengineering/communication-resources": "^0.7.0",
"@hcengineering/communication-shared": "^0.7.0",
"@hcengineering/communication-shared": "^0.7.2",
"@hcengineering/rank": "^0.7.3",
"@hcengineering/text": "^0.7.3",
"@hcengineering/text-markdown": "^0.7.3",
Expand Down
4 changes: 2 additions & 2 deletions plugins/client-resources/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
"dependencies": {
"@hcengineering/analytics": "^0.7.3",
"@hcengineering/client": "^0.7.3",
"@hcengineering/communication-sdk-types": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-sdk-types": "^0.7.2",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/core": "^0.7.3",
"@hcengineering/platform": "^0.7.3",
"@hcengineering/rpc": "^0.7.3",
Expand Down
4 changes: 2 additions & 2 deletions plugins/communication-resources/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@
"@hcengineering/card": "^0.7.0",
"@hcengineering/chat": "^0.7.0",
"@hcengineering/communication": "^0.7.0",
"@hcengineering/communication-types": "^0.7.0",
"@hcengineering/communication-shared": "^0.7.0",
"@hcengineering/communication-types": "^0.7.2",
"@hcengineering/communication-shared": "^0.7.2",
"@hcengineering/contact": "^0.7.0",
"@hcengineering/contact-resources": "^0.7.0",
"@hcengineering/core": "^0.7.3",
Expand Down
7 changes: 4 additions & 3 deletions plugins/communication-resources/src/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import CreateCardFromMessagePopup from './components/CreateCardFromMessagePopup.

import { isCardAllowedForCommunications, showForbidden, toggleReaction, toMarkup } from './utils'
import {
isMessageTranslating,
isMessageManualTranslating,
messageEditingStore,
showOriginalMessagesStore,
threadCreateMessageStore,
Expand Down Expand Up @@ -155,7 +155,7 @@ export const canReplyInThread: MessageActionVisibilityTester = (message: Message
}

export const translateMessage: MessageActionFunction = async (message: Message): Promise<void> => {
if (isMessageTranslating(message.cardId, message.id)) return
if (isMessageManualTranslating(message.cardId, message.id)) return
const result = get(translateMessagesStore).find((it) => it.cardId === message.cardId && it.messageId === message.id)

if (result != null) {
Expand All @@ -172,7 +172,8 @@ export const translateMessage: MessageActionFunction = async (message: Message):

const markup = toMarkup(message.content)
const lang = get(languageStore)
const response = message?.translates?.[lang] ?? (await aiTranslate(markup, lang))?.text
const currentTranslate = message?.translates?.[lang] ?? ''
const response = currentTranslate !== '' ? toMarkup(currentTranslate) : (await aiTranslate(markup, lang))?.text

if (response !== undefined) {
translateMessagesStore.update((store) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
-->

<script lang="ts">
import { PersonPreviewProvider, Avatar, translationStore } from '@hcengineering/contact-resources'
import { PersonPreviewProvider, Avatar } from '@hcengineering/contact-resources'
import { formatName, Person } from '@hcengineering/contact'
import { CardID, Message, MessageID } from '@hcengineering/communication-types'
import { Message } from '@hcengineering/communication-types'
import { Card } from '@hcengineering/card'
import { Label } from '@hcengineering/ui'

Expand All @@ -28,7 +28,10 @@
translateMessagesStore,
messageEditingStore,
TranslateMessagesStatus,
showOriginalMessagesStore
showOriginalMessagesStore,
isMessageTranslated,
translateToStore,
dontTranslateStore
} from '../../stores'
import { showOriginalMessage } from '../../actions'

Expand All @@ -52,35 +55,19 @@
})
}

let isTranslating = false
let translateStatus: TranslateMessagesStatus | undefined = undefined
let translateShown = false
let isManualTranslating = false
let manualTranslateStatus: TranslateMessagesStatus | undefined = undefined
let isTranslated = false

$: language = $translationStore?.enabled === true ? $translationStore?.translateTo : undefined
$: dontTranslate = $translationStore?.enabled === true ? $translationStore?.dontTranslate ?? [] : []

$: translateStatus = $translateMessagesStore.find((it) => it.cardId === card._id && it.messageId === message.id)
$: isTranslating = translateStatus?.inProgress === true
$: translateShown = isTranslateShown(message, translateStatus, language, $showOriginalMessagesStore, dontTranslate)

function isTranslateShown (
message: Message,
translateStatus?: TranslateMessagesStatus,
language?: string,
showOriginalMessages: Array<[CardID, MessageID]> = [],
dontTranslate: string[] = []
): boolean {
const showOriginal = showOriginalMessages.some(([cId, mId]) => cId === card._id && mId === message.id)

if (showOriginal) return false
if (translateStatus?.result != null) return true
if (language == null || message.language === language) return false
if (message.language != null && dontTranslate.includes(message.language)) return false

const translate = message.translates?.[language]

return translate != null
}
$: manualTranslateStatus = $translateMessagesStore.find((it) => it.cardId === card._id && it.messageId === message.id)
$: isManualTranslating = manualTranslateStatus?.inProgress === true
$: isTranslated = isMessageTranslated(
message,
$translateToStore,
$dontTranslateStore,
$translateMessagesStore,
$showOriginalMessagesStore
)
</script>

{#if compact || hideHeader}
Expand Down Expand Up @@ -141,12 +128,12 @@
(<Label label={communication.string.Edited} />)
</div>
{/if}
{#if isTranslating}
{#if isManualTranslating}
<div class="message__translating">
<Label label={communication.string.Translating} />
</div>
{/if}
{#if translateShown}
{#if isTranslated}
<div class="message__show-original" on:click={() => showOriginalMessage(message, card)}>
<Label label={communication.string.ShowOriginal} />
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@

<script lang="ts">
import { MessageViewer as MarkupMessageViewer } from '@hcengineering/presentation'
import { CardID, Markdown, Message, MessageID } from '@hcengineering/communication-types'
import { Markdown, Message } from '@hcengineering/communication-types'
import { Card } from '@hcengineering/card'
import { Person } from '@hcengineering/contact'
import { Markup } from '@hcengineering/core'
import { translationStore } from '@hcengineering/contact-resources'
import { ShowMore } from '@hcengineering/ui'

import ActivityMessageViewer from './ActivityMessageViewer.svelte'
import { toMarkup } from '../../utils'
import { isActivityMessage } from '../../activity'
import {
isShownTranslatedMessage,
TranslateMessagesStatus,
isShownManualTranslatedMessage,
translateMessagesStore,
showOriginalMessagesStore
showOriginalMessagesStore,
getMessageTranslation,
translateToStore,
dontTranslateStore
} from '../../stores'
import { translateMessage } from '../../actions'

Expand All @@ -43,37 +44,18 @@
let displayMarkup: Markup = toMarkup(message.content)
let prevContent: Markdown | undefined = undefined

$: language = $translationStore?.enabled === true ? $translationStore?.translateTo : undefined
$: dontTranslate = $translationStore?.enabled === true ? $translationStore?.dontTranslate : []
$: updateDisplayMarkup(message, $translateMessagesStore, $showOriginalMessagesStore, language, dontTranslate)

function updateDisplayMarkup (
message: Message,
translateMessages: TranslateMessagesStatus[],
showOriginalMessages: Array<[CardID, MessageID]>,
language?: string,
dontTranslate: string[] = []
): void {
const translateResult = translateMessages.find((it) => it.cardId === card._id && it.messageId === message.id)
const showOriginal = showOriginalMessages.some(([cId, mId]) => cId === card._id && mId === message.id)
if (!showOriginal && translateResult?.result != null) {
displayMarkup = translateResult.result
} else if (
language != null &&
message.translates?.[language] != null &&
!showOriginal &&
!dontTranslate?.includes(language) &&
message.language !== language
) {
displayMarkup = toMarkup(message.translates[language])
} else {
displayMarkup = toMarkup(message.content)
}
}
$: translatedMarkup = getMessageTranslation(
message,
$translateToStore,
$dontTranslateStore,
$translateMessagesStore,
$showOriginalMessagesStore
)
$: displayMarkup = translatedMarkup ?? toMarkup(message.content)

$: if (prevContent !== message.content) {
prevContent = message.content
if (isShownTranslatedMessage(message.cardId, message.id)) {
if (isShownManualTranslatedMessage(message.cardId, message.id)) {
void translateMessage(message, card)
} else {
translateMessagesStore.update((store) => {
Expand Down
Loading