37 lines
866 B
TypeScript
37 lines
866 B
TypeScript
|
import { doc, collection, setDoc } from 'firebase/firestore'
|
||
|
import _ from 'lodash'
|
||
|
|
||
|
import { db } from './init'
|
||
|
import { ClickEvent, View } from '../../../common/tracking'
|
||
|
import { listenForLogin, User } from './users'
|
||
|
|
||
|
let user: User | null = null
|
||
|
if (typeof window !== 'undefined') {
|
||
|
listenForLogin((u) => (user = u))
|
||
|
}
|
||
|
|
||
|
export async function trackView(contractId: string) {
|
||
|
if (!user) return
|
||
|
const ref = doc(collection(db, 'private-users', user.id, 'views'))
|
||
|
|
||
|
const view: View = {
|
||
|
contractId,
|
||
|
timestamp: Date.now(),
|
||
|
}
|
||
|
|
||
|
return await setDoc(ref, view)
|
||
|
}
|
||
|
|
||
|
export async function trackClick(contractId: string) {
|
||
|
if (!user) return
|
||
|
const ref = doc(collection(db, 'private-users', user.id, 'events'))
|
||
|
|
||
|
const clickEvent: ClickEvent = {
|
||
|
type: 'click',
|
||
|
contractId,
|
||
|
timestamp: Date.now(),
|
||
|
}
|
||
|
|
||
|
return await setDoc(ref, clickEvent)
|
||
|
}
|