From 133d5f02d0cd1323f33c5a5a1d0993b6aadd9f66 Mon Sep 17 00:00:00 2001 From: Arjun Patel Date: Thu, 27 Jan 2022 21:46:13 -0800 Subject: [PATCH] adding stuff for stuff --- serverless/functions/.eslintrc.js | 3 +- serverless/functions/package.json | 3 +- serverless/functions/src/index.ts | 5 ++- serverless/functions/src/notifications.ts | 50 +++++++++++++++++++---- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/serverless/functions/.eslintrc.js b/serverless/functions/.eslintrc.js index a79cb56..63a7f15 100644 --- a/serverless/functions/.eslintrc.js +++ b/serverless/functions/.eslintrc.js @@ -30,5 +30,6 @@ module.exports = { rules: { quotes: ["error", "double"], // "import/no-unresolved": 0, + // "no-unused-vars": "disabled", }, -}; +} diff --git a/serverless/functions/package.json b/serverless/functions/package.json index 1ecadfc..7594e0f 100644 --- a/serverless/functions/package.json +++ b/serverless/functions/package.json @@ -8,7 +8,8 @@ "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log", - "hotReload": "tsc --watch" + "hotReload": "tsc --watch", + "copyModels": "cp -r ../../web/models /models" }, "engines": { "node": "16" diff --git a/serverless/functions/src/index.ts b/serverless/functions/src/index.ts index 7212124..b7a9925 100644 --- a/serverless/functions/src/index.ts +++ b/serverless/functions/src/index.ts @@ -9,7 +9,10 @@ admin.initializeApp(); export const helloWorld = functions.https.onRequest((request, response) => { functions.logger.info("Hello no!", { structuredData: true }); response.send("Hello from woahhhhhh!"); -}); +}) import { agoraToken } from "./agora"; exports.agoraToken = agoraToken; + +// import { inviteUserToTeam } from "./notifications"; +// exports.inviteUserToTeam = inviteUserToTeam; diff --git a/serverless/functions/src/notifications.ts b/serverless/functions/src/notifications.ts index 2310bbb..adf8808 100644 --- a/serverless/functions/src/notifications.ts +++ b/serverless/functions/src/notifications.ts @@ -1,17 +1,49 @@ -// import * as functions from "firebase-functions"; +/* eslint-disable no-unused-vars */ +import * as functions from "firebase-functions"; import * as sgMail from "@sendgrid/mail"; +import { TeamMember, TeamMemberStatus } from "../../../web/models/teamMember"; + sgMail.setApiKey( "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" ); -// exports.inviteUserToTeam = functions.firestore -// .document('teamMembers/{userId}') -// .onCreate(async (snap, context) => { -// const newTeamMember = snap.data() as TeamMember; +enum SendgridTemplateId { + inviteTeamMember = "d-4953372ac7b94d3fa9419bad4073840f", +} -// // access a particular field as you would any JS property -// const name = newValue.name; +class SendGridEmailMessage { + to: string; + from: string; + templateId: SendgridTemplateId; + dynamic_template_data: {}; -// // perform desired operations ... -// }); + constructor( + _to: string, + _from: string, + _templateId: SendgridTemplateId, + _templateData: {} + ) { + this.to = _to; + this.from = _from; + this.templateId = _templateId; + this.dynamic_template_data = _templateData; + } +} + +export const inviteUserToTeam = functions.firestore + .document("teamMembers/{teamMemberId}") + .onCreate(async (snap, context) => { + const newTeamMember: TeamMember = snap.data() as TeamMember; + if (newTeamMember.status == TeamMemberStatus.invited) { + functions.logger.info( + "New team member invited...sending email" + + newTeamMember.inviteEmailAddress, + { structuredData: true } + ); + + // send email to people + + return; + } + })