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