Replace "you and" (#2921)

This commit is contained in:
Denis Bykhov 2023-04-07 20:46:30 +06:00 committed by GitHub
parent 4b091fa868
commit be23c96c5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 69 additions and 37 deletions

View File

@ -69,4 +69,8 @@
<path d="M11.9,13.5c0,0,0.1,0,0.2,0c0,0,0.1,0,0.1,0c0,0,0,0,0,0c2.2-0.1,3.9-1.8,3.9-4c0-2.2-1.8-4-4-4c-2.2,0-4,1.8-4,4 C8,11.7,9.7,13.5,11.9,13.5z M12,7c1.4,0,2.5,1.1,2.5,2.5c0,1.4-1.1,2.5-2.4,2.5c-0.1,0-0.2,0-0.3,0c-1.3-0.1-2.4-1.2-2.4-2.5 C9.5,8.1,10.6,7,12,7z" />
<path d="M22.8,12c0-5.9-4.8-10.8-10.8-10.8S1.2,6.1,1.2,12c0,3.1,1.3,5.9,3.5,7.9c0,0,0,0,0,0C4.8,20,4.9,20,5,20.1 c0.1,0.1,0.3,0.2,0.4,0.3c0.1,0.1,0.3,0.2,0.4,0.3C5.9,20.8,6,20.9,6.2,21c0.2,0.1,0.3,0.2,0.5,0.3c0.1,0.1,0.3,0.2,0.4,0.2 c0.2,0.1,0.3,0.2,0.5,0.2C7.7,21.8,7.8,21.9,8,22c0.2,0.1,0.4,0.1,0.5,0.2c0.1,0,0.3,0.1,0.4,0.1c0.2,0.1,0.4,0.1,0.6,0.1 c0.1,0,0.3,0.1,0.4,0.1c0.2,0,0.4,0.1,0.6,0.1c0.1,0,0.3,0,0.4,0.1c0.3,0,0.7,0.1,1,0.1c0.4,0,0.7,0,1-0.1c0.1,0,0.3,0,0.4-0.1 c0.2,0,0.4-0.1,0.6-0.1c0.1,0,0.3-0.1,0.4-0.1c0.2,0,0.4-0.1,0.6-0.1c0.1,0,0.3-0.1,0.4-0.1c0.2-0.1,0.4-0.1,0.5-0.2 c0.1-0.1,0.3-0.1,0.4-0.2c0.2-0.1,0.3-0.2,0.5-0.2c0.1-0.1,0.3-0.1,0.4-0.2c0.2-0.1,0.3-0.2,0.5-0.3c0.1-0.1,0.3-0.2,0.4-0.3 c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.1-0.1,0.2-0.2c0,0,0,0,0,0C21.4,17.9,22.8,15.1,22.8,12z M2.8,12 c0-5.1,4.1-9.2,9.2-9.2s9.2,4.1,9.2,9.2c0,2.3-0.8,4.3-2.2,6c-0.4-0.7-0.9-1.3-1.7-1.8c-3-2-7.8-2-10.8,0c-0.7,0.5-1.3,1.1-1.7,1.8 C3.6,16.3,2.8,14.3,2.8,12z M17.9,19.1c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0.1-0.3,0.2-0.4,0.3c-0.1,0.1-0.2,0.1-0.3,0.2 c-0.1,0.1-0.3,0.2-0.4,0.3c-0.1,0.1-0.2,0.1-0.3,0.2c-0.2,0.1-0.3,0.2-0.5,0.2c-0.1,0-0.2,0.1-0.3,0.1c-0.2,0.1-0.3,0.1-0.5,0.2 c-0.1,0-0.2,0.1-0.4,0.1c-0.2,0-0.3,0.1-0.5,0.1c-0.1,0-0.2,0.1-0.4,0.1c-0.2,0-0.4,0.1-0.6,0.1c-0.1,0-0.2,0-0.3,0 c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4,0-0.6-0.1c-0.1,0-0.2-0.1-0.4-0.1c-0.2,0-0.3-0.1-0.5-0.1 c-0.1,0-0.2-0.1-0.4-0.1c-0.2-0.1-0.3-0.1-0.5-0.2c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.3-0.1-0.5-0.2c-0.1-0.1-0.2-0.1-0.3-0.2 c-0.2-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1-0.1-0.3-0.2-0.4-0.3c-0.1-0.1-0.2-0.1-0.3-0.2c0,0,0,0,0,0 c0.2-0.6,0.7-1.2,1.4-1.7c2.5-1.6,6.6-1.6,9.1,0C17.3,17.9,17.7,18.5,17.9,19.1C17.9,19.1,17.9,19.1,17.9,19.1z" />
</symbol>
<symbol id="componentMembers" viewBox="0 0 16 16">
<path d="M1 3C1 1.89543 1.89543 1 3 1H9C10.1046 1 11 1.89543 11 3V3.5H6C4.61929 3.5 3.5 4.61929 3.5 6V11H3C1.89543 11 1 10.1046 1 9V3Z" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 5C5.89543 5 5 5.89543 5 7V13C5 14.1046 5.89543 15 7 15H13C14.1046 15 15 14.1046 15 13V7C15 5.89543 14.1046 5 13 5H7ZM10 10C10.9665 10 11.5 9.2165 11.5 8.25C11.5 7.2835 10.9665 6.5 10 6.5C9.0335 6.5 8.5 7.2835 8.5 8.25C8.5 9.2165 9.0335 10 10 10ZM7 12.5616C7 11.5144 7.9841 10.746 9 11C9.47572 11.7136 10.5243 11.7136 11 11C12.0159 10.746 13 11.5144 13 12.5616V13.0101C13 13.2806 12.7806 13.5 12.5101 13.5H7.48995C7.21936 13.5 7 13.2806 7 13.0101V12.5616Z" />
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -37,6 +37,7 @@ loadMetadata(contact.icon, {
SocialEdit: `${icons}#social-edit`,
Homepage: `${icons}#homepage`,
Whatsapp: `${icons}#whatsapp`,
Profile: `${icons}#profile`
Profile: `${icons}#profile`,
ComponentMembers: `${icons}#componentMembers`
})
addStringsLoader(contactId, async (lang: string) => await import(`../lang/${lang}.json`))

View File

@ -19,7 +19,6 @@
import contact, { Employee } from '@hcengineering/contact'
import { getClient } from '@hcengineering/presentation'
import { IntlString, translate } from '@hcengineering/platform'
import tracker from '../../../tracker-resources/src/plugin'
import UsersPopup from './UsersPopup.svelte'
export let value: Doc
@ -83,6 +82,6 @@
{width}
{justify}
title={buttonTitle}
icon={tracker.icon.ComponentMembers}
icon={contact.icon.ComponentMembers}
on:click={handleMembersEditorOpened}
/>

View File

@ -226,6 +226,7 @@ export const contactPlugin = plugin(contactId, {
SocialEdit: '' as Asset,
Homepage: '' as Asset,
Whatsapp: '' as Asset,
ComponentMembers: '' as Asset,
Profile: '' as Asset
},
space: {

View File

@ -9,7 +9,6 @@
"Copy": "Copy",
"MessagesSelected": "messages selected",
"PublishSelected": "Publish selected",
"YouAnd": "You and",
"CreateMessage": "Create message",
"ShareMessages": "Share messages",
"Connect": "Connect",
@ -33,6 +32,6 @@
"WriteEmail": "Write Email",
"Shared": "Shared",
"AvailableTo": "Available to",
"HaveWrittenEmail": "have written an"
"HaveWrittenEmail": "have written an email"
}
}

View File

@ -9,7 +9,6 @@
"Copy": "Копия",
"MessagesSelected": "сообщений выбрано",
"PublishSelected": "Опубликовать выбранное",
"YouAnd": "Вы и",
"CreateMessage": "Создать сообщение",
"ShareMessages": "Поделиться сообщениями",
"Connect": "Подключить",
@ -33,6 +32,6 @@
"WriteEmail": "Написать Email",
"Shared": "Публичный",
"AvailableTo": "Доступен для",
"HaveWrittenEmail": "написал(а)"
"HaveWrittenEmail": "написал(а) сообщение"
}
}

View File

@ -123,7 +123,6 @@
<div class="title-wrapper">
<span class="wrapped-title">Email</span>
<span class="wrapped-subtitle">
<Label label={gmail.string.YouAnd} />
<b>{getName(object)}</b>
</span>
</div>

View File

@ -15,8 +15,7 @@
<script lang="ts">
import { Message } from '@hcengineering/gmail'
import { getClient } from '@hcengineering/presentation'
import { Label, showPopup } from '@hcengineering/ui'
import gmail from '../../plugin'
import { showPopup } from '@hcengineering/ui'
import Main from '../Main.svelte'
export let value: Message
@ -30,4 +29,4 @@
}
</script>
<span class="over-underline" on:click={click}><Label label={gmail.string.Email} /></span>
<span class="over-underline overflow-label max-w-80" on:click={click}>{value.subject}</span>

View File

@ -25,7 +25,6 @@ export default mergeIds(gmailId, gmail, {
Copy: '' as IntlString,
MessagesSelected: '' as IntlString,
PublishSelected: '' as IntlString,
YouAnd: '' as IntlString,
CreateMessage: '' as IntlString,
ShareMessages: '' as IntlString,
Connect: '' as IntlString,

View File

@ -22,7 +22,6 @@
"Telegram": "Telegram",
"TelegramIntegrationDesc": "Use telegram integration",
"Status": "Status",
"YouAnd": "You and",
"MessagesSelected": "messages selected"
}
}

View File

@ -22,7 +22,6 @@
"Telegram": "Telegram",
"TelegramIntegrationDesc": "Подключить Telegram",
"Status": "Статус",
"YouAnd": "Вы и",
"MessagesSelected": "сообщений выбрано"
}
}

View File

@ -42,6 +42,7 @@
"@hcengineering/chunter": "^0.6.2",
"@hcengineering/login": "^0.6.1",
"@hcengineering/core": "^0.6.21",
"@hcengineering/contact-resources": "^0.6.0",
"@hcengineering/notification-resources": "^0.6.0",
"@hcengineering/attachment": "^0.6.1",
"@hcengineering/attachment-resources": "^0.6.0",

View File

@ -16,15 +16,32 @@
<script lang="ts">
import attachment from '@hcengineering/attachment'
import { AttachmentRefInput } from '@hcengineering/attachment-resources'
import contact, { Channel, Contact, EmployeeAccount, getName as getContactName } from '@hcengineering/contact'
import { Class, generateId, getCurrentAccount, Ref, SortingOrder } from '@hcengineering/core'
import contact, {
Channel,
Contact,
Employee,
EmployeeAccount,
getName as getContactName
} from '@hcengineering/contact'
import { Class, generateId, getCurrentAccount, IdMap, Ref, SortingOrder } from '@hcengineering/core'
import { NotificationClientImpl } from '@hcengineering/notification-resources'
import { getResource } from '@hcengineering/platform'
import { getEmbeddedLabel, getResource } from '@hcengineering/platform'
import { createQuery, getClient } from '@hcengineering/presentation'
import setting, { Integration } from '@hcengineering/setting'
import type { NewTelegramMessage, SharedTelegramMessage, TelegramMessage } from '@hcengineering/telegram'
import templates, { TemplateDataProvider } from '@hcengineering/templates'
import { Button, eventToHTMLElement, Icon, IconShare, Label, Panel, Scroller, showPopup } from '@hcengineering/ui'
import {
Button,
eventToHTMLElement,
Icon,
IconShare,
Label,
Panel,
Scroller,
showPopup,
tooltip
} from '@hcengineering/ui'
import { Avatar, employeeByIdStore } from '@hcengineering/contact-resources'
import { createEventDispatcher, onDestroy } from 'svelte'
import telegram from '../plugin'
import Connect from './Connect.svelte'
@ -96,8 +113,6 @@
if (channel !== undefined) {
notificationClient.updateLastView(channel._id, channel._class, undefined, true)
}
const accountsIds = new Set(messages.map((p) => p.modifiedBy as Ref<EmployeeAccount>))
updateAccountsQuery(accountsIds)
},
{
sort: { sendOn: SortingOrder.Descending },
@ -111,11 +126,9 @@
$: channel && updateMessagesQuery(channel._id)
function updateAccountsQuery (accountsIds: Set<Ref<EmployeeAccount>>): void {
accauntsQuery.query(contact.class.EmployeeAccount, { _id: { $in: Array.from(accountsIds) } }, (result) => {
accounts = result
})
}
accauntsQuery.query(contact.class.EmployeeAccount, {}, (result) => {
accounts = result
})
settingsQuery.query(
setting.class.Integration,
@ -202,6 +215,30 @@
}
}
let loading = false
function getParticipants (
messages: TelegramMessage[],
accounts: EmployeeAccount[],
object: Contact | undefined,
employees: IdMap<Employee>
): Contact[] {
if (object === undefined || accounts.length === 0) return []
const res: IdMap<Contact> = new Map()
res.set(object._id, object)
const accs = new Set(messages.map((p) => p.modifiedBy))
for (const acc of accs) {
const account = accounts.find((p) => p._id === acc)
if (account !== undefined) {
const emp = employees.get(account.employee)
if (emp !== undefined) {
res.set(emp._id, emp)
}
}
}
return Array.from(res.values())
}
$: participants = getParticipants(messages, accounts, object, $employeeByIdStore)
</script>
{#if object !== undefined}
@ -218,11 +255,14 @@
<div class="antiTitle icon-wrapper">
<div class="wrapped-icon"><Icon icon={TelegramIcon} size={'medium'} /></div>
<div class="title-wrapper">
<span class="wrapped-title">Telegram</span>
<span class="wrapped-subtitle">
<Label label={telegram.string.YouAnd} />
<b>{getContactName(object)}</b>
</span>
<div class="wrapped-title flex">
Telegram
{#each participants as participant}
<div class="ml-2" use:tooltip={{ label: getEmbeddedLabel(getContactName(participant)) }}>
<Avatar size="x-small" avatar={participant.avatar} />
</div>
{/each}
</div>
</div>
</div>
</svelte:fragment>

View File

@ -34,7 +34,6 @@ export default mergeIds(telegramId, telegram, {
Cancel: '' as IntlString,
Share: '' as IntlString,
PublishSelected: '' as IntlString,
YouAnd: '' as IntlString,
MessagesSelected: '' as IntlString
}
})

View File

@ -119,10 +119,6 @@
<rect x="1" y="5.75" width="9" height="2.5" rx="0.5" />
<rect x="4" y="10.5" width="9" height="2.5" rx="0.5" />
</symbol>
<symbol id="componentMembers" viewBox="0 0 16 16">
<path d="M1 3C1 1.89543 1.89543 1 3 1H9C10.1046 1 11 1.89543 11 3V3.5H6C4.61929 3.5 3.5 4.61929 3.5 6V11H3C1.89543 11 1 10.1046 1 9V3Z" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 5C5.89543 5 5 5.89543 5 7V13C5 14.1046 5.89543 15 7 15H13C14.1046 15 15 14.1046 15 13V7C15 5.89543 14.1046 5 13 5H7ZM10 10C10.9665 10 11.5 9.2165 11.5 8.25C11.5 7.2835 10.9665 6.5 10 6.5C9.0335 6.5 8.5 7.2835 8.5 8.25C8.5 9.2165 9.0335 10 10 10ZM7 12.5616C7 11.5144 7.9841 10.746 9 11C9.47572 11.7136 10.5243 11.7136 11 11C12.0159 10.746 13 11.5144 13 12.5616V13.0101C13 13.2806 12.7806 13.5 12.5101 13.5H7.48995C7.21936 13.5 7 13.2806 7 13.0101V12.5616Z" />
</symbol>
<symbol id="component-status-backlog" viewBox="1 1 14 14" fill="#F2994A">
<path d="M2 4.74695C2 4.68722 2.01039 4.62899 2.02989 4.57451L2.11601 4.42269C2.15266 4.37819 2.19711 4.33975 2.24806 4.30966L3.16473 3.76824L3.92054 5.08013L3.5 5.32852V5.8313H2V4.74695Z" />

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -54,7 +54,6 @@ loadMetadata(tracker.icon, {
ComponentsList: `${icons}#list`,
ComponentsTimeline: `${icons}#timeline`,
ComponentMembers: `${icons}#componentMembers`,
ComponentStatusBacklog: `${icons}#component-status-backlog`,
ComponentStatusPlanned: `${icons}#component-status-planned`,

View File

@ -460,7 +460,6 @@ export default plugin(trackerId, {
ComponentsList: '' as Asset,
ComponentsTimeline: '' as Asset,
ComponentMembers: '' as Asset,
ComponentStatusBacklog: '' as Asset,
ComponentStatusPlanned: '' as Asset,