From 286d0c29bdf096408124d4527185444c24fb867d Mon Sep 17 00:00:00 2001 From: Austin Chen Date: Mon, 9 May 2022 10:50:11 -0400 Subject: [PATCH] Add some more error handling --- functions/src/claim-manalink.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/functions/src/claim-manalink.ts b/functions/src/claim-manalink.ts index 6140b90a..0163dea7 100644 --- a/functions/src/claim-manalink.ts +++ b/functions/src/claim-manalink.ts @@ -17,7 +17,7 @@ export const claimManalink = functions const manalinkDoc = firestore.doc(`manalinks/${slug}`) const manalinkSnap = await transaction.get(manalinkDoc) if (!manalinkSnap.exists) { - return { status: 'error', message: 'Link not found' } + return { status: 'error', message: 'Manalink not found' } } const manalink = manalinkSnap.data() as Manalink @@ -30,7 +30,23 @@ export const claimManalink = functions if (claimedUserIds.includes(userId)) { return { status: 'error', - message: `${userId} already redeemed link ${slug}`, + message: `${userId} already redeemed manalink ${slug}`, + } + } + + // Disallow expired or maxed out links + if (manalink.expiresTime < Date.now()) { + return { + status: 'error', + message: `Manalink ${slug} expired on ${new Date( + manalink.expiresTime + ).toLocaleString()}`, + } + } + if (manalink.maxUses <= manalink.claims.length) { + return { + status: 'error', + message: `Manalink ${slug} has reached its max uses of ${manalink.maxUses}`, } } @@ -75,6 +91,8 @@ export const claimManalink = functions claimedUserIds: [...claimedUserIds, userId], claims: [...manalink.claims, claim], }) + + return { status: 'success', message: 'Manalink claimed' } }) })