MCPcopy Index your code
hub / github.com/ChatLab/ChatLab / getPrivateChatMemberAvatar

Function getPrivateChatMemberAvatar

packages/core/src/query/session-queries.ts:839–868  ·  view source on GitHub ↗
(
  db: DatabaseAdapter,
  sessionName: string,
  ownerId: string | null | undefined
)

Source from the content-addressed store, hash-verified

837 * Finds the "other" member (not the owner) in a private chat, falling back to name match or first with avatar.
838 */
839export function getPrivateChatMemberAvatar(
840 db: DatabaseAdapter,
841 sessionName: string,
842 ownerId: string | null | undefined
843): string | null {
844 const members = db
845 .prepare(
846 `SELECT
847 m.platform_id as platformId,
848 COALESCE(m.group_nickname, m.account_name, m.platform_id) as name,
849 m.avatar
850 FROM member m
851 WHERE COALESCE(m.account_name, '') != '系统消息'
852 ORDER BY (SELECT COUNT(*) FROM message WHERE sender_id = m.id) DESC`
853 )
854 .all() as unknown as Array<{ platformId: string; name: string; avatar: string | null }>
855
856 if (members.length === 0) return null
857
858 if (ownerId) {
859 const other = members.find((m) => m.platformId !== ownerId)
860 if (other?.avatar) return other.avatar
861 }
862
863 const sameName = members.find((m) => m.name === sessionName)
864 if (sameName?.avatar) return sameName.avatar
865
866 const firstWithAvatar = members.find((m) => m.avatar)
867 return firstWithAvatar?.avatar || null
868}

Callers 2

buildSessionFunction · 0.90
getAllSessionsFunction · 0.90

Calls 2

allMethod · 0.65
prepareMethod · 0.65

Tested by

no test coverage detected