Handle txn to non-user by burning it
This commit is contained in:
parent
f5cce0c24e
commit
ac14b3eb94
|
@ -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 }
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue
Block a user