manifold/functions/src/on-follow-user.ts
2022-07-21 17:08:09 -07:00

38 lines
1.0 KiB
TypeScript

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
import { getUser } from './utils'
import { createNotification } from './create-notification'
import { FieldValue } from 'firebase-admin/firestore'
export const onFollowUser = functions.firestore
.document('users/{userId}/follows/{followedUserId}')
.onCreate(async (change, context) => {
const { userId, followedUserId } = context.params as {
userId: string
followedUserId: string
}
const { eventId } = context
const follow = change.data() as { userId: string; timestamp: number }
const followingUser = await getUser(userId)
if (!followingUser) throw new Error('Could not find following user')
await firestore.doc(`users/${followedUserId}`).update({
followerCountCached: FieldValue.increment(1),
})
await createNotification(
followingUser.id,
'follow',
'created',
followingUser,
eventId,
'',
{ relatedUserId: follow.userId }
)
})
const firestore = admin.firestore()