UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

66 lines 2.75 kB
import { sep } from 'path'; import { INPUTS_INVITES_FOLDER } from '../../constants'; import { getRandomItemFromArray } from '../utils'; import { convertAndWriteToJSON, convertToCsvAndWrite } from './csv-converters'; export const savePreparedInvites = async ({ projectName, availableInvitesAmount }) => { const fileName = `${projectName}-invites.csv`; const invites = (await convertAndWriteToJSON({ inputPath: `${INPUTS_INVITES_FOLDER}${sep}${fileName}`, })); const invitesToUse = invites.map(({ invite_code, used }) => { return { invite_code, used: typeof used !== 'undefined' ? used : availableInvitesAmount, }; }); convertToCsvAndWrite({ data: invitesToUse, fileName: fileName, outputPath: INPUTS_INVITES_FOLDER, }); }; export const getCurrentInvite = (invites) => { const notUsedInvites = invites.filter(({ used }) => !!used); return getRandomItemFromArray(notUsedInvites); }; export const saveUsedInvites = ({ invites, projectName, walletId, logger, currentInviteToUse }) => { if (currentInviteToUse) { logger.info(`Wallet ${walletId} used ${currentInviteToUse.invite_code} invite code`); const fileName = `${projectName}-invites.csv`; const updatedInvites = invites.map(({ invite_code, used }) => { const isCurrentInvite = currentInviteToUse?.invite_code === invite_code && !!used; if (isCurrentInvite) { return { invite_code, used: used - 1 }; } return { invite_code, used }; }); convertToCsvAndWrite({ data: updatedInvites, fileName: fileName, outputPath: INPUTS_INVITES_FOLDER, }); } }; export const addInviteCode = async ({ projectName, inviteCode }) => { const fileName = `${projectName}-invites.csv`; const prevData = await convertAndWriteToJSON({ inputPath: `${INPUTS_INVITES_FOLDER}${sep}${fileName}`, }); const filteredPrevData = prevData.filter((currentData) => { return 'invite_code' in currentData && currentData?.invite_code !== inviteCode; }); const inviteCodeIsAlreadyExists = prevData.some((currentData) => 'invite_code' in currentData && currentData?.invite_code === inviteCode); if (!inviteCodeIsAlreadyExists) { convertToCsvAndWrite({ data: [...filteredPrevData, { invite_code: inviteCode }], fileName, outputPath: INPUTS_INVITES_FOLDER, }); } }; export const readInvites = async (projectName) => { return (await convertAndWriteToJSON({ inputPath: `${INPUTS_INVITES_FOLDER}${sep}${projectName}-invites.csv`, })); }; //# sourceMappingURL=invites.js.map