Refactor
This commit is contained in:
parent
1d826f7da9
commit
b0776afff8
|
@ -11,18 +11,53 @@ export const onUpdateContract = functions.firestore
|
|||
.document('contracts/{contractId}')
|
||||
.onUpdate(async (change, context) => {
|
||||
const contract = change.after.data() as Contract
|
||||
const previousContract = change.before.data() as Contract
|
||||
const { eventId } = context
|
||||
const { openCommentBounties, closeTime, question } = contract
|
||||
|
||||
if (
|
||||
!previousContract.isResolved &&
|
||||
contract.isResolved &&
|
||||
(openCommentBounties ?? 0) > 0
|
||||
) {
|
||||
await handleUnusedCommentBountyRefunds(contract)
|
||||
// No need to notify users of resolution, that's handled in resolve-market
|
||||
return
|
||||
}
|
||||
if (
|
||||
previousContract.closeTime !== closeTime ||
|
||||
previousContract.question !== question
|
||||
) {
|
||||
await handleUpdatedCloseTime(previousContract, contract, eventId)
|
||||
}
|
||||
})
|
||||
|
||||
async function handleUpdatedCloseTime(
|
||||
previousContract: Contract,
|
||||
contract: Contract,
|
||||
eventId: string
|
||||
) {
|
||||
const contractUpdater = await getUser(contract.creatorId)
|
||||
if (!contractUpdater) throw new Error('Could not find contract updater')
|
||||
let sourceText = ''
|
||||
if (previousContract.closeTime !== contract.closeTime && contract.closeTime) {
|
||||
sourceText = contract.closeTime.toString()
|
||||
} else if (previousContract.question !== contract.question) {
|
||||
sourceText = contract.question
|
||||
}
|
||||
|
||||
const previousValue = change.before.data() as Contract
|
||||
|
||||
// Refund extra unused comment bounties
|
||||
if (!previousValue.isResolved && contract.isResolved) {
|
||||
const bountiesLeft = contract.openCommentBounties ?? 0
|
||||
if (bountiesLeft <= 0) return
|
||||
await createCommentOrAnswerOrUpdatedContractNotification(
|
||||
contract.id,
|
||||
'contract',
|
||||
'updated',
|
||||
contractUpdater,
|
||||
eventId,
|
||||
sourceText,
|
||||
contract
|
||||
)
|
||||
}
|
||||
|
||||
async function handleUnusedCommentBountyRefunds(contract: Contract) {
|
||||
const outstandingCommentBounties = await getValues<Txn>(
|
||||
firestore.collection('txns').where('category', '==', 'COMMENT_BOUNTY')
|
||||
)
|
||||
|
@ -78,31 +113,6 @@ export const onUpdateContract = functions.firestore
|
|||
}
|
||||
})
|
||||
)
|
||||
return
|
||||
}
|
||||
if (
|
||||
previousValue.closeTime !== contract.closeTime ||
|
||||
previousValue.question !== contract.question
|
||||
) {
|
||||
let sourceText = ''
|
||||
if (
|
||||
previousValue.closeTime !== contract.closeTime &&
|
||||
contract.closeTime
|
||||
) {
|
||||
sourceText = contract.closeTime.toString()
|
||||
} else if (previousValue.question !== contract.question) {
|
||||
sourceText = contract.question
|
||||
}
|
||||
|
||||
await createCommentOrAnswerOrUpdatedContractNotification(
|
||||
contract.id,
|
||||
'contract',
|
||||
'updated',
|
||||
contractUpdater,
|
||||
eventId,
|
||||
sourceText,
|
||||
contract
|
||||
)
|
||||
}
|
||||
})
|
||||
const firestore = admin.firestore()
|
||||
|
|
Loading…
Reference in New Issue
Block a user