Handle txn to non-user by burning it

This commit is contained in:
James Grugett 2022-04-25 22:47:54 -04:00
parent f5cce0c24e
commit ac14b3eb94

View File

@ -46,13 +46,6 @@ export const transact = functions
}
const fromUser = fromSnap.data() as User
const toDoc = firestore.doc(`users/${toId}`)
const toSnap = await transaction.get(toDoc)
if (!toSnap.exists) {
return { status: 'error', message: 'User not found' }
}
const toUser = toSnap.data() as User
if (fromUser.balance < amount) {
return {
status: 'error',
@ -60,6 +53,16 @@ export const transact = functions
}
}
if (toType === 'user') {
const toDoc = firestore.doc(`users/${toId}`)
const toSnap = await transaction.get(toDoc)
if (!toSnap.exists) {
return { status: 'error', message: 'User not found' }
}
const toUser = toSnap.data() as User
transaction.update(toDoc, { balance: toUser.balance + amount })
}
const newTxnDoc = firestore.collection(`txns/`).doc()
const txn: Txn = removeUndefinedProps({
@ -79,7 +82,6 @@ export const transact = functions
transaction.create(newTxnDoc, txn)
transaction.update(fromDoc, { balance: fromUser.balance - amount })
transaction.update(toDoc, { balance: toUser.balance + amount })
return { status: 'success', txnId: newTxnDoc.id }
})