From 1d792a2c6c78846e46d7d60876624d2e938ddfc3 Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Mon, 23 Jan 2023 09:58:41 +0000 Subject: [PATCH] generic component (#6594) * first attempt of * changes to icons * reverted changes back to initial state, needs fix: teams not showing * WIP * Fix weird reactnode error * Fix loading text * added upgradeTip to routing forms * icon colors * create and use hook to check if user has team plan * use useTeamPlan for upgradeTeamsBadge * replace huge svg with compressed jpeg * responsive fixes * Update packages/ui/components/badge/UpgradeTeamsBadge.tsx Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> * Give team plan features to E2E tests * Allow option to make a user part of team int ests * Remove flash of paywall for team user * Add team user for typeform tests as well Co-authored-by: Peer Richelsen Co-authored-by: CarinaWolli Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Co-authored-by: Alex van Andel Co-authored-by: Hariom Balhara --- .../pages/settings/my-account/appearance.tsx | 12 +- apps/web/playwright/fixtures/users.ts | 27 +- .../public/routing-form-banner-background.jpg | Bin 0 -> 57300 bytes apps/web/public/static/locales/en/common.json | 9 +- .../pages/forms/[...appPages].tsx | 308 +++++++++++------- .../playwright/tests/basic.e2e.ts | 12 +- .../typeform/playwright/tests/basic.e2e.ts | 7 +- .../ee/teams/components/TeamsListing.tsx | 97 ++---- .../ee/video/ViewRecordingsDialog.tsx | 11 +- packages/features/tips/UpgradeTip.tsx | 86 +++++ packages/features/tips/index.ts | 1 + packages/lib/hooks/useHasTeamPlan.ts | 9 + .../ui/components/badge/UpgradeTeamsBadge.tsx | 4 + 13 files changed, 379 insertions(+), 204 deletions(-) create mode 100644 apps/web/public/routing-form-banner-background.jpg create mode 100644 packages/features/tips/UpgradeTip.tsx create mode 100644 packages/lib/hooks/useHasTeamPlan.ts diff --git a/apps/web/pages/settings/my-account/appearance.tsx b/apps/web/pages/settings/my-account/appearance.tsx index a0056343ba..7a535318b1 100644 --- a/apps/web/pages/settings/my-account/appearance.tsx +++ b/apps/web/pages/settings/my-account/appearance.tsx @@ -4,6 +4,7 @@ import { Controller, useForm } from "react-hook-form"; import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout"; import { APP_NAME } from "@calcom/lib/constants"; +import { useHasTeamPlan } from "@calcom/lib/hooks/useHasTeamPlan"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { @@ -49,7 +50,8 @@ const AppearanceView = () => { const session = useSession(); const utils = trpc.useContext(); const { data: user, isLoading } = trpc.viewer.me.useQuery(); - const { data: dataHasTeamPlan, isLoading: isLoadingHasTeamPlan } = trpc.viewer.teams.hasTeamPlan.useQuery(); + + const { isLoading: isTeamPlanStatusLoading, hasTeamPlan } = useHasTeamPlan(); const formMethods = useForm({ defaultValues: { @@ -74,7 +76,7 @@ const AppearanceView = () => { }, }); - if (isLoading || isLoadingHasTeamPlan) + if (isLoading || isTeamPlanStatusLoading) return ; if (!user) return null; @@ -182,18 +184,18 @@ const AppearanceView = () => {

{t("disable_cal_branding", { appName: APP_NAME })}

- {!dataHasTeamPlan?.hasTeamPlan && } +

{t("removes_cal_branding", { appName: APP_NAME })}

formMethods.setValue("hideBranding", checked, { shouldDirty: true }) } - checked={!dataHasTeamPlan?.hasTeamPlan ? false : value} + checked={hasTeamPlan ? value : false} />
diff --git a/apps/web/playwright/fixtures/users.ts b/apps/web/playwright/fixtures/users.ts index 84128d6f96..3fdb9f4a4a 100644 --- a/apps/web/playwright/fixtures/users.ts +++ b/apps/web/playwright/fixtures/users.ts @@ -1,6 +1,6 @@ import type { Page, WorkerInfo } from "@playwright/test"; import type Prisma from "@prisma/client"; -import { Prisma as PrismaType } from "@prisma/client"; +import { Prisma as PrismaType, MembershipRole } from "@prisma/client"; import { hash } from "bcryptjs"; import dayjs from "@calcom/dayjs"; @@ -34,6 +34,27 @@ const seededForm = { type UserWithIncludes = PrismaType.UserGetPayload; +const createTeamAndAddUser = async ({ user }: { user: { id: number; role?: MembershipRole } }) => { + const team = await prisma.team.create({ + data: { + name: "", + slug: `team-${Date.now()}`, + }, + }); + if (!team) { + return; + } + + const { role = MembershipRole.OWNER, id: userId } = user; + await prisma.membership.create({ + data: { + teamId: team.id, + userId, + role: role, + }, + }); +}; + // creates a user fixture instance and stores the collection export const createUsersFixture = (page: Page, workerInfo: WorkerInfo) => { const store = { users: [], page } as { users: UserFixture[]; page: typeof page }; @@ -42,6 +63,7 @@ export const createUsersFixture = (page: Page, workerInfo: WorkerInfo) => { opts?: CustomUserOpts | null, scenario: { seedRoutingForms?: boolean; + hasTeam?: true; } = {} ) => { const _user = await prisma.user.create({ @@ -193,6 +215,9 @@ export const createUsersFixture = (page: Page, workerInfo: WorkerInfo) => { where: { id: _user.id }, include: userIncludes, }); + if (scenario.hasTeam) { + await createTeamAndAddUser({ user: { id: user.id, role: "OWNER" } }); + } const userFixture = createUserFixture(user, store.page!); store.users.push(userFixture); return userFixture; diff --git a/apps/web/public/routing-form-banner-background.jpg b/apps/web/public/routing-form-banner-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba472f65fb0a3b653d0b2df37396ad47f6df50fe GIT binary patch literal 57300 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 Iz*da5|rH^96W@1ckeW!l*FRhh>Vj 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 literal 0 HcmV?d00001 diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 7586f9f14f..51a7c408c3 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -1238,6 +1238,7 @@ "to": "To", "workflow_turned_on_successfully": "{{workflowName}} workflow turned {{offOn}} successfully", "download_responses": "Download Responses", + "download_responses_description": "Download all responses to your form in CSV format.", "download": "Download", "create_your_first_form": "Create your first form", "create_your_first_form_description": "With Routing Forms you can ask qualifying questions and route to the correct person or event type.", @@ -1280,6 +1281,8 @@ "routing_forms_send_email_owner": "Send Email to Owner", "routing_forms_send_email_owner_description": "Sends an email to the owner when the form is submitted", "add_new_form": "Add new form", + "create_your_first_route": "Create your first route", + "route_to_the_right_person": "Route to the right person based on the answers to your form", "form_description": "Create your form to route a booker", "copy_link_to_form": "Copy link to form", "theme": "Theme", @@ -1514,5 +1517,9 @@ "install_google_meet": "Install Google Meet", "install_google_calendar": "Install Google Calendar", "sender_name": "Sender name", - "no_recordings_found": "No recordings found" + "no_recordings_found": "No recordings found", + "reporting": "Reporting", + "reporting_feature": "See all incoming from data and download it as a CSV", + "teams_plan_required": "Teams plan required", + "routing_forms_are_a_great_way": "Routing forms are a great way to route your incoming leads to the right person. Upgrade to a Teams plan to access this feature." } diff --git a/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx index c63f6098e4..198fddf8e8 100644 --- a/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx @@ -1,8 +1,13 @@ // TODO: i18n import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import { useMemo } from "react"; +import SkeletonLoaderTeamList from "@calcom/features/ee/teams/components/SkeletonloaderTeamList"; import Shell, { ShellMain } from "@calcom/features/shell/Shell"; +import { UpgradeTip } from "@calcom/features/tips"; +import { WEBAPP_URL } from "@calcom/lib/constants"; import useApp from "@calcom/lib/hooks/useApp"; +import { useHasTeamPlan } from "@calcom/lib/hooks/useHasTeamPlan"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { AppGetServerSidePropsContext, AppPrisma, AppUser } from "@calcom/types/AppGetServerSideProps"; @@ -15,6 +20,7 @@ import { List, ListLinkItem, Tooltip, + Button, } from "@calcom/ui"; import { inferSSRProps } from "@lib/types/inferSSRProps"; @@ -27,12 +33,47 @@ export default function RoutingForms({ appUrl, }: inferSSRProps & { appUrl: string }) { const { t } = useLocale(); - const { data: forms } = trpc.viewer.appRoutingForms.forms.useQuery(undefined, { + const { hasTeamPlan } = useHasTeamPlan(); + + const { data: forms, isLoading } = trpc.viewer.appRoutingForms.forms.useQuery(undefined, { initialData: forms_, }); const { data: typeformApp } = useApp("typeform"); + const features = [ + { + icon: , + title: t("create_your_first_form"), + description: t("create_your_first_form_description"), + }, + { + icon: , + title: t("create_your_first_route"), + description: t("route_to_the_right_person"), + }, + { + icon: , + title: t("reporting"), + description: t("reporting_feature"), + }, + { + icon: , + title: t("test_routing_form"), + description: t("test_preview_description"), + }, + { + icon: , + title: t("routing_forms_send_email_owner"), + description: t("routing_forms_send_email_owner_description"), + }, + { + icon: , + title: t("download_responses"), + description: t("download_responses_description"), + }, + ]; + function NewFormButton() { return ( } subtitle={t("routing_forms_description")}> - -
-
- {!forms?.length ? ( - } - /> - ) : null} - {forms?.length ? ( -
- - {forms.map((form, index) => { - if (!form) { - return null; - } + } + subtitle={t("routing_forms_description")}> + } + buttons={ +
+ + + + +
+ }> + +
+
+ {!forms?.length ? ( + } + /> + ) : null} + {forms?.length ? ( +
+ + {forms.map((form, index) => { + if (!form) { + return null; + } - const description = form.description || ""; - const disabled = form.disabled; - form.routes = form.routes || []; - const fields = form.fields || []; - return ( - - - - + const description = form.description || ""; + const disabled = form.disabled; + form.routes = form.routes || []; + const fields = form.fields || []; + return ( + + + + + + - - - - - {t("edit")} - - - {t("download_responses")} - - - {t("embed")} - - - {t("duplicate")} - - {typeformApp?.isInstalled ? ( + - {t("Copy Typeform Redirect Url")} + className="!flex" + StartIcon={Icon.FiEdit}> + {t("edit")} - ) : null} - - - {t("delete")} - - - - - }> -
- - {fields.length} {fields.length === 1 ? "field" : "fields"} - - - {form.routes.length} {form.routes.length === 1 ? "route" : "routes"} - - - {form._count.responses} {form._count.responses === 1 ? "response" : "responses"} - -
-
- ); - })} -
-
- ) : null} + + {t("download_responses")} + + + {t("embed")} + + + {t("duplicate")} + + {typeformApp?.isInstalled ? ( + + {t("Copy Typeform Redirect Url")} + + ) : null} + + + {t("delete")} + + + + + }> +
+ + {fields.length} {fields.length === 1 ? "field" : "fields"} + + + {form.routes.length} {form.routes.length === 1 ? "route" : "routes"} + + + {form._count.responses} {form._count.responses === 1 ? "response" : "responses"} + +
+ + ); + })} + +
+ ) : null} +
-
- + + ); } diff --git a/packages/app-store/ee/routing-forms/playwright/tests/basic.e2e.ts b/packages/app-store/ee/routing-forms/playwright/tests/basic.e2e.ts index 57ed3be2c8..e413277403 100644 --- a/packages/app-store/ee/routing-forms/playwright/tests/basic.e2e.ts +++ b/packages/app-store/ee/routing-forms/playwright/tests/basic.e2e.ts @@ -118,7 +118,12 @@ test.describe("Routing Forms", () => { // TODO: How to install the app just once? test.beforeEach(async ({ page, users }) => { - const user = await users.create({ username: "routing-forms" }); + const user = await users.create( + { username: "routing-forms" }, + { + hasTeam: true, + } + ); await user.login(); // Install app await page.goto(`/apps/routing-forms`); @@ -148,7 +153,10 @@ test.describe("Routing Forms", () => { users: Fixtures["users"]; page: Page; }) { - const user = await users.create({ username: "routing-forms" }, { seedRoutingForms: true }); + const user = await users.create( + { username: "routing-forms" }, + { seedRoutingForms: true, hasTeam: true } + ); await user.login(); // Install app await page.goto(`/apps/routing-forms`); diff --git a/packages/app-store/typeform/playwright/tests/basic.e2e.ts b/packages/app-store/typeform/playwright/tests/basic.e2e.ts index d8d74147e0..ce52acb620 100644 --- a/packages/app-store/typeform/playwright/tests/basic.e2e.ts +++ b/packages/app-store/typeform/playwright/tests/basic.e2e.ts @@ -8,7 +8,12 @@ import { CAL_URL } from "@calcom/lib/constants"; import { Fixtures, test } from "@calcom/web/playwright/lib/fixtures"; const installApps = async (page: Page, users: Fixtures["users"]) => { - const user = await users.create({ username: "routing-forms" }); + const user = await users.create( + { username: "routing-forms" }, + { + hasTeam: true, + } + ); await user.login(); await page.goto(`/apps/routing-forms`); await page.click('[data-testid="install-app-button"]'); diff --git a/packages/features/ee/teams/components/TeamsListing.tsx b/packages/features/ee/teams/components/TeamsListing.tsx index 57fd3356b4..43fa44cadc 100644 --- a/packages/features/ee/teams/components/TeamsListing.tsx +++ b/packages/features/ee/teams/components/TeamsListing.tsx @@ -3,10 +3,10 @@ import { useState } from "react"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { APP_NAME } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import isCalcom from "@calcom/lib/isCalcom"; import { trpc } from "@calcom/trpc/react"; -import { Alert, Button, ButtonGroup, EmptyScreen, Icon } from "@calcom/ui"; +import { Alert, Button, ButtonGroup, Icon } from "@calcom/ui"; +import { UpgradeTip } from "../../../tips"; import SkeletonLoaderTeamList from "./SkeletonloaderTeamList"; import TeamList from "./TeamList"; @@ -21,36 +21,35 @@ export function TeamsListing() { }); const teams = data?.filter((m) => m.accepted) || []; - const invites = data?.filter((m) => !m.accepted) || []; const features = [ { - icon: , + icon: , title: t("collective_scheduling"), description: t("make_it_easy_to_book"), }, { - icon: , + icon: , title: t("round_robin"), description: t("find_the_best_person"), }, { - icon: , + icon: , title: t("fixed_round_robin"), description: t("add_one_fixed_attendee"), }, { - icon: , + icon: , title: t("sms_attendee_action"), description: t("make_it_easy_to_book"), }, { - icon: , + icon: , title: "Cal Video" + " " + t("recordings_title"), description: t("upgrade_to_access_recordings_description"), }, { - icon: , + icon: , title: t("disable_cal_branding", { appName: APP_NAME }), description: t("disable_cal_branding_description", { appName: APP_NAME }), }, @@ -59,66 +58,26 @@ export function TeamsListing() { return ( <> {!!errorMessage && } - {invites.length > 0 && ( -
-

{t("open_invitations")}

- -
- )} - {isLoading && } - {!teams.length && !isLoading && ( - <> - {!isCalcom ? ( -
-
-
-

{t("calcom_is_better_with_team")}

-

{t("add_your_team_members")}

-
- - - - -
-
-
-
- {features.map((feature) => ( -
- {feature.icon} -

{feature.title}

-

{feature.description}

-
- ))} -
-
- ) : ( - - {t("create_team")} - - } - /> - )} - - )} - {teams.length > 0 && } + } + buttons={ +
+ + + + +
+ }> + +
); } diff --git a/packages/features/ee/video/ViewRecordingsDialog.tsx b/packages/features/ee/video/ViewRecordingsDialog.tsx index 0b46197c43..96343263af 100644 --- a/packages/features/ee/video/ViewRecordingsDialog.tsx +++ b/packages/features/ee/video/ViewRecordingsDialog.tsx @@ -1,8 +1,8 @@ -import { useSession } from "next-auth/react"; import { useState } from "react"; import dayjs from "@calcom/dayjs"; import LicenseRequired from "@calcom/features/ee/common/components/v2/LicenseRequired"; +import useHasTeamPlan from "@calcom/lib/hooks/useHasTeamPlan"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RecordingItemSchema } from "@calcom/prisma/zod-utils"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; @@ -18,7 +18,6 @@ import { import { Button, showToast, Icon } from "@calcom/ui"; import RecordingListSkeleton from "./components/RecordingListSkeleton"; -import UpgradeRecordingBanner from "./components/UpgradeRecordingBanner"; type BookingItem = RouterOutputs["viewer"]["bookings"]["get"]["bookings"][number]; @@ -65,7 +64,9 @@ export const ViewRecordingsDialog = (props: IViewRecordingsDialog) => { const { t, i18n } = useLocale(); const { isOpenDialog, setIsOpenDialog, booking, timeFormat } = props; const [downloadingRecordingId, setRecordingId] = useState(null); - const { data: dataHasTeamPlan, isLoading: isLoadingHasTeamPlan } = trpc.viewer.teams.hasTeamPlan.useQuery(); + + const { hasTeamPlan, isLoading: isTeamPlanStatusLoading } = useHasTeamPlan(); + const roomName = booking?.references?.find((reference: PartialReference) => reference.type === "daily_video")?.meetingId ?? undefined; @@ -109,7 +110,7 @@ export const ViewRecordingsDialog = (props: IViewRecordingsDialog) => { <> - {(isLoading || isLoadingHasTeamPlan) && } + {(isLoading || isTeamPlanStatusLoading) && } {recordings && "data" in recordings && recordings?.data?.length > 0 && (
{recordings.data.map((recording: RecordingItemSchema, index: number) => { @@ -125,7 +126,7 @@ export const ViewRecordingsDialog = (props: IViewRecordingsDialog) => { {convertSecondsToMs(recording.duration)}

- {dataHasTeamPlan?.hasTeamPlan ? ( + {hasTeamPlan ? (