From 871398a28d619817e4aa76a0db0bd3824ada39d1 Mon Sep 17 00:00:00 2001 From: "Ean Milligan (Bastion)" Date: Fri, 7 Apr 2023 01:28:43 -0400 Subject: [PATCH] Add getters for LFGMembers --- src/buttons/event-creation/utils.ts | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/buttons/event-creation/utils.ts b/src/buttons/event-creation/utils.ts index eef9e1d..ac39efe 100644 --- a/src/buttons/event-creation/utils.ts +++ b/src/buttons/event-creation/utils.ts @@ -140,9 +140,29 @@ export const generateLFGButtons = (whitelist: boolean): [ButtonComponent, Button }, }]; -const generateMemberTitle = (memberList: Array, maxMembers: number): string => `Members Joined: ${memberList.length}/${maxMembers}`; -const generateMemberList = (memberList: Array): string => memberList.length ? memberList.map((member) => `${member.name} - <@${member.id}>`).join('\n') : 'None'; -const generateAlternateList = (alternateList: Array): string => +// Get Member Counts from the title +export const getEventMemberCount = (rawMemberTitle: string): [number, number] => { + const [rawCurrentCount, rawMaxCount] = rawMemberTitle.split('/'); + const currentMemberCount = parseInt(rawCurrentCount.split(':')[1] || '0') + const maxMemberCount = parseInt(rawMaxCount || '0'); + return [currentMemberCount, maxMemberCount] +}; + +// Get LFGMember objects from string list +export const getLfgMembers = (rawMemberList: string): Array => rawMemberList.split('\n').map((rawMember) => { + const [memberName, memberMention] = rawMember.split('-'); + const lfgMember: LFGMember = { + id: BigInt(memberMention.split('<@')[1].split('>')[0].trim() || '0'), + name: memberName.trim(), + joined: rawMember.endsWith('*'), + } + return lfgMember; +}); + +// Member List generators +export const generateMemberTitle = (memberList: Array, maxMembers: number): string => `Members Joined: ${memberList.length}/${maxMembers}`; +export const generateMemberList = (memberList: Array): string => memberList.length ? memberList.map((member) => `${member.name} - <@${member.id}>`).join('\n') : 'None'; +export const generateAlternateList = (alternateList: Array): string => alternateList.length ? alternateList.map((member) => `${member.name} - <@${member.id}>${member.joined ? ' *' : ''}`).join('\n') : 'None'; export enum LfgEmbedIndexes {