From e70c86f86fc9044e6bd51cf8afd13ce09f04fc3b Mon Sep 17 00:00:00 2001 From: Kristina Date: Fri, 21 Mar 2025 16:48:54 +0400 Subject: [PATCH] Fix mentions and threads (#8309) --- plugins/contact/src/utils.ts | 4 +++- .../activity-resources/src/references.ts | 16 ++++++--------- server-plugins/chunter-resources/src/index.ts | 2 +- server-plugins/contact/src/utils.ts | 20 +++++++++---------- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/plugins/contact/src/utils.ts b/plugins/contact/src/utils.ts index 50b22e0779..f5d29c41cf 100644 --- a/plugins/contact/src/utils.ts +++ b/plugins/contact/src/utils.ts @@ -296,13 +296,15 @@ export function includesAny (members: PersonId[], ids: PersonId[]): boolean { export async function getPersonBySocialKey (client: Client, socialKey: string): Promise { const socialId = await client.findOne(contact.class.SocialIdentity, { key: socialKey }) - + if (socialId === undefined) return undefined return await client.findOne(contact.class.Person, { _id: socialId?.attachedTo, _class: socialId?.attachedToClass }) } export async function getPersonBySocialId (client: Client, socialIdString: PersonId): Promise { const socialId = await client.findOne(contact.class.SocialIdentity, { _id: socialIdString as SocialIdentityRef }) + if (socialId === undefined) return undefined + return await client.findOne(contact.class.Person, { _id: socialId?.attachedTo, _class: socialId?.attachedToClass }) } diff --git a/server-plugins/activity-resources/src/references.ts b/server-plugins/activity-resources/src/references.ts index 0671707d4b..9625222d05 100644 --- a/server-plugins/activity-resources/src/references.ts +++ b/server-plugins/activity-resources/src/references.ts @@ -22,7 +22,6 @@ import core, { Data, Doc, generateId, - parseSocialIdString, Hierarchy, Markup, Ref, @@ -40,6 +39,7 @@ import core, { AccountUuid } from '@hcengineering/core' import notification, { CommonInboxNotification, MentionInboxNotification } from '@hcengineering/notification' +import { getPerson } from '@hcengineering/server-contact' import { StorageAdapter, TriggerControl } from '@hcengineering/server-core' import { applyNotificationProviders, @@ -155,15 +155,11 @@ export async function getPersonNotificationTxes ( archived: false } - const { type, value } = parseSocialIdString(senderId) - - const senderSocialIds = await control.findAll(ctx, contact.class.SocialIdentity, { type, value }) - const senderSocialId = senderSocialIds[0] - - const senderPerson = - senderId !== undefined - ? (await control.findAll(ctx, contact.class.Person, { _id: senderSocialId.attachedTo }, { limit: 1 }))[0] - : undefined + const senderPerson = await getPerson(control, senderId) + const senderSocialIds = + senderPerson !== undefined + ? await control.findAll(ctx, contact.class.SocialIdentity, { attachedTo: senderPerson._id }) + : [] const receiverSocialString = pickPrimarySocialId(receiverSocialStrings) const receiverInfo = toReceiverInfo(control.hierarchy, { diff --git a/server-plugins/chunter-resources/src/index.ts b/server-plugins/chunter-resources/src/index.ts index a5ebb84b54..4d13981b97 100644 --- a/server-plugins/chunter-resources/src/index.ts +++ b/server-plugins/chunter-resources/src/index.ts @@ -137,7 +137,7 @@ async function OnThreadMessageCreated (originTx: TxCUD, control: TriggerCon const person = await getPerson(control, originTx.modifiedBy) if (person === undefined) { - return [] + return [lastReplyTx] } if ((message.repliedPersons ?? []).includes(person._id)) { diff --git a/server-plugins/contact/src/utils.ts b/server-plugins/contact/src/utils.ts index d5e951a7ab..e4d169be42 100644 --- a/server-plugins/contact/src/utils.ts +++ b/server-plugins/contact/src/utils.ts @@ -14,7 +14,7 @@ // import { TriggerControl } from '@hcengineering/server-core' -import contact, { Employee, pickPrimarySocialId, SocialIdentityRef, type Person } from '@hcengineering/contact' +import contact, { Employee, type Person, pickPrimarySocialId, SocialIdentityRef } from '@hcengineering/contact' import { AccountUuid, parseSocialIdString, PersonId, type Ref, toIdMap } from '@hcengineering/core' export async function getCurrentPerson (control: TriggerControl): Promise { @@ -25,14 +25,12 @@ export async function getCurrentPerson (control: TriggerControl): Promise): Promise { @@ -119,7 +117,13 @@ export async function getEmployee (control: TriggerControl, personId: PersonId): const socialId = ( await control.findAll(control.ctx, contact.class.SocialIdentity, { _id: personId as SocialIdentityRef }) )[0] - const employee = ( + + if (socialId === undefined) { + control.ctx.error('Cannot find social id', { _id: personId }) + return undefined + } + + return ( await control.findAll( control.ctx, contact.mixin.Employee, @@ -127,8 +131,6 @@ export async function getEmployee (control: TriggerControl, personId: PersonId): { limit: 1 } ) )[0] - - return employee } export async function getEmployeeByAcc (control: TriggerControl, account: AccountUuid): Promise { @@ -136,11 +138,9 @@ export async function getEmployeeByAcc (control: TriggerControl, account: Accoun } export async function getEmployees (control: TriggerControl, accounts: AccountUuid[]): Promise { - const employees = await control.findAll(control.ctx, contact.mixin.Employee, { + return await control.findAll(control.ctx, contact.mixin.Employee, { personUuid: { $in: accounts } }) - - return employees } export async function getEmployeesBySocialIds (