Add some more error handling

This commit is contained in:
Austin Chen 2022-05-09 10:50:11 -04:00
parent 7fff5a6f75
commit 286d0c29bd

View File

@ -17,7 +17,7 @@ export const claimManalink = functions
const manalinkDoc = firestore.doc(`manalinks/${slug}`) const manalinkDoc = firestore.doc(`manalinks/${slug}`)
const manalinkSnap = await transaction.get(manalinkDoc) const manalinkSnap = await transaction.get(manalinkDoc)
if (!manalinkSnap.exists) { if (!manalinkSnap.exists) {
return { status: 'error', message: 'Link not found' } return { status: 'error', message: 'Manalink not found' }
} }
const manalink = manalinkSnap.data() as Manalink const manalink = manalinkSnap.data() as Manalink
@ -30,7 +30,23 @@ export const claimManalink = functions
if (claimedUserIds.includes(userId)) { if (claimedUserIds.includes(userId)) {
return { return {
status: 'error', 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], claimedUserIds: [...claimedUserIds, userId],
claims: [...manalink.claims, claim], claims: [...manalink.claims, claim],
}) })
return { status: 'success', message: 'Manalink claimed' }
}) })
}) })