@cobuildlab/8base-chat
Version:
Chat component that uses 8base
30 lines (22 loc) • 847 B
text/typescript
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);
}