From 208fc2f0e44bc0227f5a5f81ff03025cfbb221bf Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Tue, 31 Jan 2023 18:16:43 +0000 Subject: [PATCH] Feat - invite user to team flow improvements (#6725) --- .../web/public/emails/calendar-email-hero.png | Bin 0 -> 16538 bytes apps/web/public/emails/calendar@2x.png | Bin 0 -> 246 bytes apps/web/public/emails/choose-username@2x.png | Bin 0 -> 357 bytes apps/web/public/emails/clock@2x.png | Bin 0 -> 487 bytes apps/web/public/emails/linkIcon.png | Bin 467 -> 193 bytes apps/web/public/emails/linkIcon.svg | 6 +- apps/web/public/emails/user-check@2x.png | Bin 0 -> 381 bytes apps/web/public/static/locales/en/common.json | 11 ++ .../emails/src/components/CallToAction.tsx | 2 +- .../emails/src/components/V2BaseEmailHtml.tsx | 4 +- .../emails/src/templates/TeamInviteEmail.tsx | 146 ++++++++++++++---- .../emails/templates/team-invite-email.ts | 1 + .../components/MemberInvitationModal.tsx | 2 +- packages/trpc/server/routers/viewer/teams.tsx | 8 +- 14 files changed, 141 insertions(+), 39 deletions(-) create mode 100644 apps/web/public/emails/calendar-email-hero.png create mode 100644 apps/web/public/emails/calendar@2x.png create mode 100644 apps/web/public/emails/choose-username@2x.png create mode 100644 apps/web/public/emails/clock@2x.png create mode 100644 apps/web/public/emails/user-check@2x.png diff --git a/apps/web/public/emails/calendar-email-hero.png b/apps/web/public/emails/calendar-email-hero.png new file mode 100644 index 0000000000000000000000000000000000000000..8e22e31f699944565bd0cd8c2258a3c61f15ab2e GIT binary patch literal 16538 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 literal 0 HcmV?d00001 diff --git a/apps/web/public/emails/calendar@2x.png b/apps/web/public/emails/calendar@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..77561d880e625784f2f17ab261270b845ad629dc GIT binary patch literal 246 zcmVV!Z07*qoM6N<$g3^LvXaE2J literal 0 HcmV?d00001 diff --git a/apps/web/public/emails/choose-username@2x.png b/apps/web/public/emails/choose-username@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..282a93f21078bdbff6ac276ca65b70d3c128818a GIT binary patch literal 357 zcmV-r0h<1aP)6((Y-{8ye_q>7GM`@9gvlhZyoblK z#>kWKSo-Hx;5r@N^Z6b?1 z6H#)la585VN^l*v*U{-D8Ab?X;3$DTg+1|sEi)4_w-31lzx3GR)gC(#ebQ+7 zvG;>?^zbY9gP(hRSAyJ!oF$LH9|Sd?Enc2{A(P1qv-+j%W$sG>00000NkvXXu0mjf DZtRtI literal 0 HcmV?d00001 diff --git a/apps/web/public/emails/clock@2x.png b/apps/web/public/emails/clock@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0255e51a68aca75d19c52ee400865809bd398601 GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc;00(?STfwTZA;Bw52GeAB3B|(0{ z3<3rU4gm!X6BcZ^@Zdl~ZOH;Z1_s7(PZ!6K3dW;T!w+pX;9+^{H~HJY?Y{j9E9?J0 z(_}oRUH((hY0IrBUCR@!Nx?N2r#+dmM&U|dRJhH|U+cE!NqkJXAOn=pUsrC33$1;0*jHMkk49NomYZo&u6&YqK^dM9h{@lAbb94k2ENaE2n zZ>#m{d21znW%PN&dZw|hy~A83f5yX9a0`3JQ#sZO$(wH%Gc4Av>(HBCa>O&RH+#it zmu2guL+ox>X!6xpNyJ;e>oj0+@XvQ*X5ig@(ZPQICJ~EQF~4G(4?hliqi%Ci=t*EUMPt0r@JYD@<);T3K0RSK!y0icQ literal 0 HcmV?d00001 diff --git a/apps/web/public/emails/linkIcon.png b/apps/web/public/emails/linkIcon.png index a07de652032139c76758c708437bd29f0c163e07..853a93c2e7b60773410b2df70628d4a38a39279e 100644 GIT binary patch delta 171 zcmcc2e2~$sGr-TCmrII^fq{Y7)59eQNb`U&2OE$KD~)*$q&N#aB8wRqxP?KOkzv*x ziHTjf%YDvuq9}#{E(> z@^Vp1_#}3S^^0m1E8E-NFE5LJKG(^xB>_oNB=C_oAAbR8Nkl)x11g zaIgzq*Zt)kEHw4+mPBw2BFnOcy;2wL!Pm}6JJ5kkJ5Yho=A^`O+egAt08Q}Nw6>3c zW2?h{0Cp8PsOJo!1AjJvLO2EiHW&mYmswe~`QANv5W!gx7yxCP(5$w2gVb&pKew(Ds$1MN=002ovPDHLkU;%<=a=khL diff --git a/apps/web/public/emails/linkIcon.svg b/apps/web/public/emails/linkIcon.svg index 6f3751ebd9..f0732e7e6e 100644 --- a/apps/web/public/emails/linkIcon.svg +++ b/apps/web/public/emails/linkIcon.svg @@ -1,5 +1,3 @@ - - - - + + diff --git a/apps/web/public/emails/user-check@2x.png b/apps/web/public/emails/user-check@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..262c1a2473cb7a33598cfa13650e834441d524d1 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc;00(?STfwTZJkkAkSA{;kby6 z9_5=q6<%?KTT2`4dHegtv8d`uWWDZG)O>n+#Z;4N z_w`RMm~lbn_nJ$eMB}vd=g;jn`OmF>_4=-L`%ZdI`&!Q@Q8#IJ{_K!X-jOQ)+AZ5_ zz4PO*yf}VX@r*g&zlVQCH~rnj$?5+1-ErA=eU=}WAIs`V{pDVE_sjJ6{NjTDWZ$nb zojd>EJ7J##@j&FirdE!V?UMC5eWp&6%^WI5zjP+tbF@*M!0 - -
+ +
`} /> diff --git a/packages/emails/src/templates/TeamInviteEmail.tsx b/packages/emails/src/templates/TeamInviteEmail.tsx index 03332e173b..14a0cbc0eb 100644 --- a/packages/emails/src/templates/TeamInviteEmail.tsx +++ b/packages/emails/src/templates/TeamInviteEmail.tsx @@ -1,6 +1,7 @@ import type { TFunction } from "next-i18next"; +import { ReactNode } from "react"; -import { APP_NAME, BASE_URL, IS_PRODUCTION } from "@calcom/lib/constants"; +import { APP_NAME, WEBAPP_URL, IS_PRODUCTION } from "@calcom/lib/constants"; import { V2BaseEmailHtml, CallToAction } from "../components"; @@ -10,6 +11,7 @@ type TeamInvite = { to: string; teamName: string; joinLink: string; + isCalcomMember: boolean; }; export const TeamInviteEmail = ( @@ -22,39 +24,100 @@ export const TeamInviteEmail = ( team: props.teamName, appName: APP_NAME, })}> +

+ <>{props.language("email_no_user_invite_heading", { appName: APP_NAME })} +

-

- <> - {props.language("user_invited_you", { - user: props.from, - team: props.teamName, - appName: APP_NAME, - })} - ! - +

+ <>{props.language("email_no_user_invite_subheading", { invitedBy: props.from, appName: APP_NAME })}

-

- <>{props.language("calcom_explained", { appName: APP_NAME })} +

+ +
+

+ <>{props.language("email_no_user_invite_steps_intro")}

- + + {!props.isCalcomMember && ( +
+ + + + +
+ )} + +
+

+ <>{props.language("email_no_user_signoff", { appName: APP_NAME })} +

+

@@ -70,3 +133,34 @@ export const TeamInviteEmail = ( ); }; + +const EmailStep = (props: { translationString: string; iconsrc: string }) => { + return ( +

+
+ # +
+

+ <>{props.translationString} +

+
+ ); +}; diff --git a/packages/emails/templates/team-invite-email.ts b/packages/emails/templates/team-invite-email.ts index e8461f644b..be70399e71 100644 --- a/packages/emails/templates/team-invite-email.ts +++ b/packages/emails/templates/team-invite-email.ts @@ -11,6 +11,7 @@ export type TeamInvite = { to: string; teamName: string; joinLink: string; + isCalcomMember: boolean; }; export default class TeamInviteEmail extends BaseEmail { diff --git a/packages/features/ee/teams/components/MemberInvitationModal.tsx b/packages/features/ee/teams/components/MemberInvitationModal.tsx index ccd98e2f32..3b2c47401a 100644 --- a/packages/features/ee/teams/components/MemberInvitationModal.tsx +++ b/packages/features/ee/teams/components/MemberInvitationModal.tsx @@ -153,7 +153,7 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) color="primary" className="ltr:ml-2 ltr:mr-2 rtl:ml-2" data-testid="invite-new-member-button"> - {t("invite_new_member")} + {t("invite")} diff --git a/packages/trpc/server/routers/viewer/teams.tsx b/packages/trpc/server/routers/viewer/teams.tsx index 4f47189e13..5787b42b10 100644 --- a/packages/trpc/server/routers/viewer/teams.tsx +++ b/packages/trpc/server/routers/viewer/teams.tsx @@ -279,8 +279,6 @@ export const viewerTeamsRouter = router({ }, }); - let inviteeUserId: number | undefined = invitee?.id; - if (!invitee) { // liberal email match @@ -291,7 +289,7 @@ export const viewerTeamsRouter = router({ }); // valid email given, create User and add to team - const user = await ctx.prisma.user.create({ + await ctx.prisma.user.create({ data: { email: input.usernameOrEmail, invitedTo: input.teamId, @@ -303,7 +301,6 @@ export const viewerTeamsRouter = router({ }, }, }); - inviteeUserId = user.id; const token: string = randomBytes(32).toString("hex"); @@ -314,7 +311,6 @@ export const viewerTeamsRouter = router({ expires: new Date(new Date().setHours(168)), // +1 week }, }); - if (ctx?.user?.name && team?.name) { await sendTeamInviteEmail({ language: translation, @@ -322,6 +318,7 @@ export const viewerTeamsRouter = router({ to: input.usernameOrEmail, teamName: team.name, joinLink: `${WEBAPP_URL}/signup?token=${token}&callbackUrl=/teams`, + isCalcomMember: false, }); } } else { @@ -357,6 +354,7 @@ export const viewerTeamsRouter = router({ to: sendTo, teamName: team.name, joinLink: WEBAPP_URL + "/settings/teams", + isCalcomMember: true, }); } }