diff --git a/functions/src/on-update-contract.ts b/functions/src/on-update-contract.ts index d667f0d2..301d6286 100644 --- a/functions/src/on-update-contract.ts +++ b/functions/src/on-update-contract.ts @@ -1,11 +1,7 @@ import * as functions from 'firebase-functions' -import { getUser, getValues, log } from './utils' +import { getUser } from './utils' import { createCommentOrAnswerOrUpdatedContractNotification } from './create-notification' import { Contract } from '../../common/contract' -import { Txn } from '../../common/txn' -import { partition, sortBy } from 'lodash' -import { runTxn, TxnData } from './transact' -import * as admin from 'firebase-admin' export const onUpdateContract = functions.firestore .document('contracts/{contractId}') @@ -20,7 +16,6 @@ export const onUpdateContract = functions.firestore contract.isResolved && (openCommentBounties ?? 0) > 0 ) { - await handleUnusedCommentBountyRefunds(contract) // No need to notify users of resolution, that's handled in resolve-market return } @@ -56,63 +51,3 @@ async function handleUpdatedCloseTime( contract ) } - -async function handleUnusedCommentBountyRefunds(contract: Contract) { - const outstandingCommentBounties = await getValues( - firestore.collection('txns').where('category', '==', 'COMMENT_BOUNTY') - ) - - const commentBountiesOnThisContract = sortBy( - outstandingCommentBounties.filter( - (bounty) => bounty.data?.contractId === contract.id - ), - (bounty) => bounty.createdTime - ) - - const [toBank, fromBank] = partition( - commentBountiesOnThisContract, - (bounty) => bounty.toType === 'BANK' - ) - if (toBank.length <= fromBank.length) return - - await firestore - .collection('contracts') - .doc(contract.id) - .update({ openCommentBounties: 0 }) - - const refunds = toBank.slice(fromBank.length) - await Promise.all( - refunds.map(async (extraBountyTxn) => { - const result = await firestore.runTransaction(async (trans) => { - const bonusTxn: TxnData = { - fromId: extraBountyTxn.toId, - fromType: 'BANK', - toId: extraBountyTxn.fromId, - toType: 'USER', - amount: extraBountyTxn.amount, - token: 'M$', - category: 'REFUND_COMMENT_BOUNTY', - data: { - contractId: contract.id, - }, - } - return await runTxn(trans, bonusTxn) - }) - - if (result.status != 'success' || !result.txn) { - log( - `Couldn't refund bonus for user: ${extraBountyTxn.fromId} - status:`, - result.status - ) - log('message:', result.message) - } else { - log( - `Refund bonus txn for user: ${extraBountyTxn.fromId} completed:`, - result.txn?.id - ) - } - }) - ) -} - -const firestore = admin.firestore()