import * as functions from 'firebase-functions' import * as dayjs from 'dayjs' import * as utc from 'dayjs/plugin/utc' dayjs.extend(utc) import { getPrivateUser } from './utils' import { User } from 'common/user' import { sendCreatorGuideEmail, sendInterestingMarketsEmail, sendPersonalFollowupEmail, sendWelcomeEmail, } from './emails' import { getTrendingContracts } from './weekly-markets-emails' export const onCreateUser = functions .runWith({ secrets: ['MAILGUN_KEY'] }) .firestore.document('users/{userId}') .onCreate(async (snapshot) => { const user = snapshot.data() as User const privateUser = await getPrivateUser(user.id) if (!privateUser) return await sendWelcomeEmail(user, privateUser) const followupSendTime = dayjs().add(48, 'hours').toString() await sendPersonalFollowupEmail(user, privateUser, followupSendTime) const day = dayjs().utc().day() const skipInterestingMarkets = // skip email if weekly email is about to go out day === 0 || (day === 1 && dayjs().utc().hour() <= 19) const guideSendTime = dayjs() .add(skipInterestingMarkets ? 24 : 96, 'hours') .toString() await sendCreatorGuideEmail(user, privateUser, guideSendTime) if (skipInterestingMarkets) return const contracts = await getTrendingContracts() const marketsSendTime = dayjs().add(24, 'hours').toString() await sendInterestingMarketsEmail( user, privateUser, contracts, marketsSendTime ) })