diff --git a/frontend/graphql/operations/contacts.graphql b/frontend/graphql/operations/contacts.graphql index 356dd51..86ff019 100644 --- a/frontend/graphql/operations/contacts.graphql +++ b/frontend/graphql/operations/contacts.graphql @@ -5,6 +5,8 @@ query ContactsQuery { avatar channels lastContactAt + lastMessageText + lastMessageChannel description } } diff --git a/frontend/graphql/schema.graphql b/frontend/graphql/schema.graphql index 0beb1cd..0e842b7 100644 --- a/frontend/graphql/schema.graphql +++ b/frontend/graphql/schema.graphql @@ -171,6 +171,8 @@ type Contact { avatar: String! channels: [String!]! lastContactAt: String! + lastMessageText: String! + lastMessageChannel: String! description: String! } diff --git a/frontend/server/graphql/schema.ts b/frontend/server/graphql/schema.ts index e115f41..fec1c3e 100644 --- a/frontend/server/graphql/schema.ts +++ b/frontend/server/graphql/schema.ts @@ -460,7 +460,12 @@ async function getContacts(auth: AuthContext | null) { where: { teamId: ctx.teamId }, include: { note: { select: { content: true } }, - messages: { select: { occurredAt: true }, orderBy: { occurredAt: "desc" }, take: 1 }, + messages: { + ...(messageWhere ? { where: messageWhere } : {}), + select: { content: true, channel: true, occurredAt: true }, + orderBy: { occurredAt: "desc" as const }, + take: 1, + }, }, orderBy: { updatedAt: "desc" }, take: 500, @@ -511,6 +516,8 @@ async function getContacts(auth: AuthContext | null) { avatar: c.avatarUrl ?? "", channels: Array.from(channelsByContactId.get(c.id) ?? []), lastContactAt: c.messages[0]?.occurredAt?.toISOString?.() ?? c.updatedAt.toISOString(), + lastMessageText: c.messages[0]?.content ?? "", + lastMessageChannel: c.messages[0]?.channel ? mapChannel(c.messages[0].channel) : "", description: c.note?.content ?? "", })); } @@ -2008,6 +2015,8 @@ export const crmGraphqlSchema = buildSchema(` avatar: String! channels: [String!]! lastContactAt: String! + lastMessageText: String! + lastMessageChannel: String! description: String! }