* Notifications generating on comment,answer,contract update * Notifications MVP * Submitted an answer => answered * Listen for unseen notifications * Fix userlink formatting, move page * Fix links * Remove redundant code * Cleanup * Cleanup * Refactor name * Comments * Cleanup & update notif only after data retrieval * Find initial new notifs on user change * Enforce auth rules in db * eslint update * Code review changes * Refactor reason
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as functions from 'firebase-functions'
 | |
| import { getUser } from './utils'
 | |
| import { createNotification } from './create-notification'
 | |
| import { Contract } from '../../common/contract'
 | |
| 
 | |
| export const onUpdateContract = functions.firestore
 | |
|   .document('contracts/{contractId}')
 | |
|   .onUpdate(async (change, context) => {
 | |
|     const contract = change.after.data() as Contract
 | |
|     const { eventId } = context
 | |
| 
 | |
|     const contractUpdater = await getUser(contract.creatorId)
 | |
|     if (!contractUpdater) throw new Error('Could not find contract updater')
 | |
| 
 | |
|     const previousValue = change.before.data() as Contract
 | |
|     if (previousValue.isResolved !== contract.isResolved) {
 | |
|       await createNotification(
 | |
|         contract.id,
 | |
|         'contract',
 | |
|         'resolved',
 | |
|         contract,
 | |
|         contractUpdater,
 | |
|         eventId
 | |
|       )
 | |
|     } else if (
 | |
|       previousValue.closeTime !== contract.closeTime ||
 | |
|       previousValue.description !== contract.description
 | |
|     ) {
 | |
|       await createNotification(
 | |
|         contract.id,
 | |
|         'contract',
 | |
|         'updated',
 | |
|         contract,
 | |
|         contractUpdater,
 | |
|         eventId
 | |
|       )
 | |
|     }
 | |
|   })
 |