manifold/functions/src/emails.ts

61 lines
1.5 KiB
TypeScript
Raw Normal View History

import { Contract } from '../../common/contract'
import { User } from '../../common/user'
2022-01-10 22:07:44 +00:00
import { sendTemplateEmail } from './send-email'
import { getPrivateUser, getUser } from './utils'
2022-01-10 22:07:44 +00:00
type market_resolved_template = {
userId: string
2022-01-10 22:07:44 +00:00
name: string
creatorName: string
question: string
outcome: string
payout: string
url: string
}
export const sendMarketResolutionEmail = async (
userId: string,
payout: number,
creator: User,
contract: Contract,
resolution: 'YES' | 'NO' | 'CANCEL' | 'MKT'
) => {
const privateUser = await getPrivateUser(userId)
if (
!privateUser ||
privateUser.unsubscribedFromResolutionEmails ||
!privateUser.email
)
return
const user = await getUser(userId)
if (!user) return
2022-01-10 22:07:44 +00:00
const outcome = toDisplayResolution[resolution]
2022-01-10 22:07:44 +00:00
const subject = `Resolved ${outcome}: ${contract.question}`
2022-01-10 22:07:44 +00:00
const templateData: market_resolved_template = {
userId: user.id,
2022-01-10 22:07:44 +00:00
name: user.name,
creatorName: creator.name,
question: contract.question,
outcome,
payout: `${Math.round(payout)}`,
url: `https://manifold.markets/${creator.username}/${contract.slug}`,
}
2022-01-10 22:07:44 +00:00
// Modify template here:
// https://app.mailgun.com/app/sending/domains/mg.manifold.markets/templates/edit/market-resolved/initial
// Mailgun username: james@mantic.markets
await sendTemplateEmail(
privateUser.email,
subject,
'market-resolved',
templateData
)
}
const toDisplayResolution = { YES: 'YES', NO: 'NO', CANCEL: 'N/A', MKT: 'MKT' }