UNPKG

@cobuildlab/8base-chat

Version:

Chat component that uses 8base

30 lines (22 loc) 847 B
import { DmPreviewFragment } from 'shared/graphql/__generated__'; // -- TYPES type Members = NonNullable<DmPreviewFragment['members']>; // -- MAIN /** * Generates name for Group using members first names. * @param names First names of users * @example * getGroupName(['A', 'B', 'C']) // -> A, B & C */ export function getGroupName(names: string[]) { const cloneNames = [...names]; const endName = cloneNames.pop(); return cloneNames.join(', ') + ` & ${endName}`; } export function getDmName(members: Members, currentUserId: string) { const dmMembers = members.items.filter(el => el.user && el.user.id !== currentUserId); const firstNames = dmMembers.map(el => el.user!.firstName || '-'); return dmMembers.length === 1 ? `${dmMembers[0].user!.firstName} ${dmMembers[0].user!.lastName}` : getGroupName(firstNames); }