2022-06-01 13:11:25 +00:00
|
|
|
import * as functions from 'firebase-functions'
|
|
|
|
import { getUser } from './utils'
|
2022-08-24 16:49:53 +00:00
|
|
|
import { createCommentOrAnswerOrUpdatedContractNotification } from './create-notification'
|
2022-06-01 13:11:25 +00:00
|
|
|
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
|
2022-09-12 16:34:56 +00:00
|
|
|
if (
|
2022-06-01 13:11:25 +00:00
|
|
|
previousValue.closeTime !== contract.closeTime ||
|
2022-08-22 22:26:54 +00:00
|
|
|
previousValue.question !== contract.question
|
2022-06-01 13:11:25 +00:00
|
|
|
) {
|
2022-06-10 22:48:28 +00:00
|
|
|
let sourceText = ''
|
2022-08-22 22:26:54 +00:00
|
|
|
if (
|
|
|
|
previousValue.closeTime !== contract.closeTime &&
|
|
|
|
contract.closeTime
|
|
|
|
) {
|
2022-06-10 22:48:28 +00:00
|
|
|
sourceText = contract.closeTime.toString()
|
2022-08-22 22:26:54 +00:00
|
|
|
} else if (previousValue.question !== contract.question) {
|
|
|
|
sourceText = contract.question
|
2022-06-10 22:48:28 +00:00
|
|
|
}
|
|
|
|
|
2022-08-24 16:49:53 +00:00
|
|
|
await createCommentOrAnswerOrUpdatedContractNotification(
|
2022-06-01 13:11:25 +00:00
|
|
|
contract.id,
|
|
|
|
'contract',
|
|
|
|
'updated',
|
|
|
|
contractUpdater,
|
2022-06-06 17:36:59 +00:00
|
|
|
eventId,
|
2022-06-10 22:48:28 +00:00
|
|
|
sourceText,
|
2022-08-24 16:49:53 +00:00
|
|
|
contract
|
2022-06-01 13:11:25 +00:00
|
|
|
)
|
|
|
|
}
|
|
|
|
})
|