Store view counts & last viewed time
This commit is contained in:
parent
53c79f41a3
commit
d639e73284
|
@ -15,6 +15,7 @@ export * from './create-answer'
|
||||||
export * from './on-create-comment'
|
export * from './on-create-comment'
|
||||||
export * from './on-fold-follow'
|
export * from './on-fold-follow'
|
||||||
export * from './on-fold-delete'
|
export * from './on-fold-delete'
|
||||||
|
export * from './on-view'
|
||||||
export * from './unsubscribe'
|
export * from './unsubscribe'
|
||||||
export * from './update-contract-metrics'
|
export * from './update-contract-metrics'
|
||||||
export * from './update-user-metrics'
|
export * from './update-user-metrics'
|
||||||
|
|
24
functions/src/on-view.ts
Normal file
24
functions/src/on-view.ts
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import * as functions from 'firebase-functions'
|
||||||
|
import * as admin from 'firebase-admin'
|
||||||
|
import { View } from '../../common/tracking'
|
||||||
|
|
||||||
|
const firestore = admin.firestore()
|
||||||
|
|
||||||
|
export const onView = functions.firestore
|
||||||
|
.document('private-users/{userId}/views/{viewId}')
|
||||||
|
.onCreate(async (snapshot, context) => {
|
||||||
|
const { userId } = context.params
|
||||||
|
|
||||||
|
const { contractId, timestamp } = snapshot.data() as View
|
||||||
|
|
||||||
|
await firestore
|
||||||
|
.doc(`private-users/${userId}/cached/viewCounts`)
|
||||||
|
.set(
|
||||||
|
{ [contractId]: admin.firestore.FieldValue.increment(1) },
|
||||||
|
{ merge: true }
|
||||||
|
)
|
||||||
|
|
||||||
|
await firestore
|
||||||
|
.doc(`private-users/${userId}/cached/lastViewed`)
|
||||||
|
.set({ [contractId]: timestamp }, { merge: true })
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user