Conversation
|
[diff-counting] Significant lines: 324. |
| const interviewerNames: string[] = []; | ||
| if (slot.lead) { | ||
| interviewerNames.push(`${slot.lead.firstName} ${slot.lead.lastName} (Lead)`); | ||
| } | ||
| slot.members.forEach((member, index) => { | ||
| if (member) { | ||
| interviewerNames.push(`${member.firstName} ${member.lastName}`); | ||
| } | ||
| slot.members.forEach((member) => { | ||
| if (member) interviewerNames.push(`${member.firstName} ${member.lastName}`); | ||
| }); |
There was a problem hiding this comment.
Looking at the email body after this code, interviewerNames is never used! We can either remove this, or add - Interviewers: ${interviewerNames.join(', ')}. The second option wuould be helpful for applicants to know who they'll be meeting with. I'm not sure what is the best option, but you can provide more input on such.
| @@ -4,7 +4,12 @@ import InterviewSlotDao from '../dao/InterviewSlotDao'; | |||
| import { BadRequestError, NotFoundError, PermissionError } from '../utils/errors'; | |||
There was a problem hiding this comment.
Hi Adrienne. Everything looks really well done, and when tested, I did receive the email and got it added to my GCal. There was only really one comment really on what to change. However, I do wonder if you have tested out deleting an available time slot from like leads side. I know this isn't common so it's not that big of a worry.
Summary
The previous gapi/Google OAuth approach required the https://www.googleapis.com/auth/calendar.events scope to solve an issue we came across where applicants were receiving errors from trying to add their time slot to gcal. The issue was that this scope is classified as sensitive by Google and when added, it requires an app verification before it can be used in production which is more overhead than needed for this feature.
This new approach uses .ics attachments sent via email that don't require OAuth and can work with any calendar app. When sign-ups and cancellations occur, an email is sent with the ics attachment that includes the time slots location, date/time, and a uid. This uid is the same across the invitation + cancellation, so the same event is modified each time. Previously calendar invites were only sent to applicants, now DTI members also receive them.
calendar.tsand any previous, related gapi integrationInterviewSchedulerinstance.Test Plan
Notion Link
notion
Notes