From a15cad4d03fc75a258169a9c3fe515feee8d33ce Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Sat, 20 Apr 2024 02:23:34 +0100 Subject: [PATCH] chore: Removing away (DB related, not slot related) from code (#14673) * chore: Removing away (DB related, not slot related) from code * Remove more isAway/away, eg. references --- apps/api/v1/lib/validations/user.ts | 2 -- .../d/[link]/[slug]/getServerSideProps.tsx | 3 --- .../team/[slug]/[type]/getServerSideProps.tsx | 1 - .../users-public-view.getServerSideProps.tsx | 3 +-- ...rs-type-public-view.getServerSideProps.tsx | 2 -- .../users/views/users-type-public-view.tsx | 2 -- apps/web/pages/d/[link]/[slug].tsx | 2 -- .../instant-meeting/team/[slug]/[type].tsx | 3 --- apps/web/pages/team/[slug]/[type].tsx | 2 -- .../bookingScenario/getSampleUserInSession.ts | 1 - packages/features/bookings/Booker/types.ts | 5 ----- .../features/ee/users/server/trpc-router.ts | 1 - packages/features/shell/Shell.tsx | 22 ------------------- packages/lib/server/repository/user.ts | 1 - packages/lib/test/builder.ts | 2 -- .../server/middlewares/sessionMiddleware.ts | 1 - .../server/routers/loggedInViewer/_router.tsx | 15 ------------- .../routers/loggedInViewer/away.handler.ts | 22 ------------------- .../routers/loggedInViewer/away.schema.ts | 7 ------ .../routers/loggedInViewer/me.handler.ts | 1 - 20 files changed, 1 insertion(+), 97 deletions(-) delete mode 100644 packages/trpc/server/routers/loggedInViewer/away.handler.ts delete mode 100644 packages/trpc/server/routers/loggedInViewer/away.schema.ts diff --git a/apps/api/v1/lib/validations/user.ts b/apps/api/v1/lib/validations/user.ts index 2bccf2f961..cf237f8045 100644 --- a/apps/api/v1/lib/validations/user.ts +++ b/apps/api/v1/lib/validations/user.ts @@ -82,7 +82,6 @@ export const schemaUserBaseBodyParams = User.pick({ brandColor: true, darkBrandColor: true, allowDynamicBooking: true, - away: true, role: true, // @note: disallowing avatar changes via API for now. We can add it later if needed. User should upload image via UI. // avatar: true, @@ -171,7 +170,6 @@ export const schemaUserReadPublic = User.pick({ brandColor: true, darkBrandColor: true, allowDynamicBooking: true, - away: true, createdDate: true, verified: true, invitedTo: true, diff --git a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx index f0ab9cb03e..7811be9ea2 100644 --- a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx +++ b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx @@ -52,7 +52,6 @@ async function getUserPageProps(context: GetServerSidePropsContext) { }); let name: string; - let isAway = false; let hideBranding = false; const notFound = { @@ -96,7 +95,6 @@ async function getUserPageProps(context: GetServerSidePropsContext) { } name = username; - isAway = user.away; hideBranding = user.hideBranding; } @@ -129,7 +127,6 @@ async function getUserPageProps(context: GetServerSidePropsContext) { eventData.length ), booking, - away: isAway, user: name, slug, trpcState: ssr.dehydrate(), diff --git a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx index f5263dfa45..03a7c87696 100644 --- a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx +++ b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx @@ -89,7 +89,6 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => metadata: eventData.metadata, }, booking, - away: false, user: teamSlug, teamId: team.id, slug: meetingSlug, diff --git a/apps/web/modules/users/views/users-public-view.getServerSideProps.tsx b/apps/web/modules/users/views/users-public-view.getServerSideProps.tsx index 95d820689b..ffa51aeb7c 100644 --- a/apps/web/modules/users/views/users-public-view.getServerSideProps.tsx +++ b/apps/web/modules/users/views/users-public-view.getServerSideProps.tsx @@ -39,7 +39,7 @@ export type UserPageProps = { allowSEOIndexing: boolean; username: string | null; }; - users: (Pick & { + users: (Pick & { profile: UserProfile; })[]; themeBasis: string | null; @@ -177,7 +177,6 @@ export const getServerSideProps: GetServerSideProps = async (cont avatarUrl: user.avatarUrl, verified: user.verified, profile: user.profile, - away: user.away, })), entity: { ...(org?.logoUrl ? { logoUrl: org?.logoUrl } : {}), diff --git a/apps/web/modules/users/views/users-type-public-view.getServerSideProps.tsx b/apps/web/modules/users/views/users-type-public-view.getServerSideProps.tsx index 13bfa996c6..42a03703f7 100644 --- a/apps/web/modules/users/views/users-type-public-view.getServerSideProps.tsx +++ b/apps/web/modules/users/views/users-type-public-view.getServerSideProps.tsx @@ -86,7 +86,6 @@ async function getDynamicGroupPageProps(context: GetServerSidePropsContext) { booking, user: usernames.join("+"), slug, - away: false, trpcState: ssr.dehydrate(), isBrandingHidden: false, isSEOIndexable: true, @@ -165,7 +164,6 @@ async function getUserPageProps(context: GetServerSidePropsContext) { }, user: username, slug, - away: false, trpcState: ssr.dehydrate(), isBrandingHidden: user?.hideBranding, isSEOIndexable: user?.allowSEOIndexing, diff --git a/apps/web/modules/users/views/users-type-public-view.tsx b/apps/web/modules/users/views/users-type-public-view.tsx index f0d4e9650e..5986861538 100644 --- a/apps/web/modules/users/views/users-type-public-view.tsx +++ b/apps/web/modules/users/views/users-type-public-view.tsx @@ -23,7 +23,6 @@ export default function Type({ user, isEmbed, booking, - away, isBrandingHidden, isSEOIndexable, rescheduleUid, @@ -47,7 +46,6 @@ export default function Type({ username={user} eventSlug={slug} bookingData={booking} - isAway={away} hideBranding={isBrandingHidden} entity={eventData.entity} durationConfig={eventData.metadata?.multipleDuration} diff --git a/apps/web/pages/d/[link]/[slug].tsx b/apps/web/pages/d/[link]/[slug].tsx index f6fc4e9aa1..20233baca1 100644 --- a/apps/web/pages/d/[link]/[slug].tsx +++ b/apps/web/pages/d/[link]/[slug].tsx @@ -13,7 +13,6 @@ export default function Type({ isEmbed, user, booking, - away, isBrandingHidden, isTeamEvent, entity, @@ -33,7 +32,6 @@ export default function Type({ username={user} eventSlug={slug} bookingData={booking} - isAway={away} hideBranding={isBrandingHidden} isTeamEvent={isTeamEvent} entity={entity} diff --git a/apps/web/pages/org/[orgSlug]/instant-meeting/team/[slug]/[type].tsx b/apps/web/pages/org/[orgSlug]/instant-meeting/team/[slug]/[type].tsx index 85bff0b1da..158202b913 100644 --- a/apps/web/pages/org/[orgSlug]/instant-meeting/team/[slug]/[type].tsx +++ b/apps/web/pages/org/[orgSlug]/instant-meeting/team/[slug]/[type].tsx @@ -21,7 +21,6 @@ export default function Type({ slug, user, booking, - away, isEmbed, isBrandingHidden, entity, @@ -42,7 +41,6 @@ export default function Type({ username={user} eventSlug={slug} bookingData={booking} - isAway={away} hideBranding={isBrandingHidden} isTeamEvent isInstantMeeting @@ -110,7 +108,6 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) => eventData.length ), booking: null, - away: false, user: teamSlug, teamId: team.id, slug: meetingSlug, diff --git a/apps/web/pages/team/[slug]/[type].tsx b/apps/web/pages/team/[slug]/[type].tsx index 112db06174..3f6eda1ca3 100644 --- a/apps/web/pages/team/[slug]/[type].tsx +++ b/apps/web/pages/team/[slug]/[type].tsx @@ -30,7 +30,6 @@ export default function Type({ slug, user, booking, - away, isEmbed, isBrandingHidden, eventData, @@ -54,7 +53,6 @@ export default function Type({ username={user} eventSlug={slug} bookingData={booking} - isAway={away} isInstantMeeting={isInstantMeeting} hideBranding={isBrandingHidden} isTeamEvent diff --git a/apps/web/test/utils/bookingScenario/getSampleUserInSession.ts b/apps/web/test/utils/bookingScenario/getSampleUserInSession.ts index 5057c206d2..56b472ad4f 100644 --- a/apps/web/test/utils/bookingScenario/getSampleUserInSession.ts +++ b/apps/web/test/utils/bookingScenario/getSampleUserInSession.ts @@ -31,7 +31,6 @@ export const getSampleUserInSession = function () { identityProvider: IdentityProvider.CAL, brandColor: "#292929", darkBrandColor: "#fafafa", - away: false, metadata: null, role: UserPermissionRole.USER, disableImpersonation: false, diff --git a/packages/features/bookings/Booker/types.ts b/packages/features/bookings/Booker/types.ts index cb38256aae..01e899424f 100644 --- a/packages/features/bookings/Booker/types.ts +++ b/packages/features/bookings/Booker/types.ts @@ -51,11 +51,6 @@ export interface BookerProps { selectedDate?: Date; hideBranding?: boolean; - /** - * Sets the Booker component to the away state. - * This is NOT revalidated by calling the API. - */ - isAway?: boolean; /** * If false and the current username indicates a dynamic booking, * the Booker will immediately show an error. diff --git a/packages/features/ee/users/server/trpc-router.ts b/packages/features/ee/users/server/trpc-router.ts index 7d62928ec2..4647604bca 100644 --- a/packages/features/ee/users/server/trpc-router.ts +++ b/packages/features/ee/users/server/trpc-router.ts @@ -28,7 +28,6 @@ const userBodySchema = User.pick({ // darkBrandColor: true, allowDynamicBooking: true, identityProvider: true, - // away: true, role: true, avatarUrl: true, }); diff --git a/packages/features/shell/Shell.tsx b/packages/features/shell/Shell.tsx index 3c660d2015..59bd05bcf9 100644 --- a/packages/features/shell/Shell.tsx +++ b/packages/features/shell/Shell.tsx @@ -397,29 +397,7 @@ function UserDropdown({ small }: UserDropdownProps) { screenResolution: `${screen.width}x${screen.height}`, }); }); - const mutation = trpc.viewer.away.useMutation({ - onMutate: async ({ away }) => { - await utils.viewer.me.cancel(); - const previousValue = utils.viewer.me.getData(); - - if (previousValue) { - utils.viewer.me.setData(undefined, { ...previousValue, away }); - } - - return { previousValue }; - }, - onError: (_, __, context) => { - if (context?.previousValue) { - utils.viewer.me.setData(undefined, context.previousValue); - } - - showToast(t("toggle_away_error"), "error"); - }, - onSettled() { - utils.viewer.me.invalidate(); - }, - }); const [helpOpen, setHelpOpen] = useState(false); const [menuOpen, setMenuOpen] = useState(false); diff --git a/packages/lib/server/repository/user.ts b/packages/lib/server/repository/user.ts index d51b78140a..c20a12875a 100644 --- a/packages/lib/server/repository/user.ts +++ b/packages/lib/server/repository/user.ts @@ -50,7 +50,6 @@ const userSelect = Prisma.validator()({ invitedTo: true, brandColor: true, darkBrandColor: true, - away: true, allowDynamicBooking: true, allowSEOIndexing: true, receiveMonthlyDigestEmail: true, diff --git a/packages/lib/test/builder.ts b/packages/lib/test/builder.ts index fea2cfb43c..118f069a90 100644 --- a/packages/lib/test/builder.ts +++ b/packages/lib/test/builder.ts @@ -207,7 +207,6 @@ type UserPayload = Prisma.UserGetPayload<{ selectedCalendars: true; schedules: true; avatarUrl: true; - away: true; backupCodes: true; bio: true; brandColor: true; @@ -255,7 +254,6 @@ export const buildUser = >( allowDynamicBooking: true, availability: [], avatarUrl: "", - away: false, backupCodes: null, bio: null, brandColor: "#292929", diff --git a/packages/trpc/server/middlewares/sessionMiddleware.ts b/packages/trpc/server/middlewares/sessionMiddleware.ts index 6cfcf1b959..bd41f2baab 100644 --- a/packages/trpc/server/middlewares/sessionMiddleware.ts +++ b/packages/trpc/server/middlewares/sessionMiddleware.ts @@ -54,7 +54,6 @@ export async function getUserFromSession(ctx: TRPCContextInner, session: Maybe { - if (!UNSTABLE_HANDLER_CACHE.away) { - UNSTABLE_HANDLER_CACHE.away = (await import("./away.handler")).awayHandler; - } - - // Unreachable code but required for type safety - if (!UNSTABLE_HANDLER_CACHE.away) { - throw new Error("Failed to load handler"); - } - - return UNSTABLE_HANDLER_CACHE.away({ ctx, input }); - }), - connectedCalendars: authedProcedure.input(ZConnectedCalendarsInputSchema).query(async ({ ctx, input }) => { if (!UNSTABLE_HANDLER_CACHE.connectedCalendars) { UNSTABLE_HANDLER_CACHE.connectedCalendars = ( diff --git a/packages/trpc/server/routers/loggedInViewer/away.handler.ts b/packages/trpc/server/routers/loggedInViewer/away.handler.ts deleted file mode 100644 index b9787cedf5..0000000000 --- a/packages/trpc/server/routers/loggedInViewer/away.handler.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { prisma } from "@calcom/prisma"; -import type { TrpcSessionUser } from "@calcom/trpc/server/trpc"; - -import type { TAwayInputSchema } from "./away.schema"; - -type AwayOptions = { - ctx: { - user: NonNullable; - }; - input: TAwayInputSchema; -}; - -export const awayHandler = async ({ ctx, input }: AwayOptions) => { - await prisma.user.update({ - where: { - email: ctx.user.email, - }, - data: { - away: input.away, - }, - }); -}; diff --git a/packages/trpc/server/routers/loggedInViewer/away.schema.ts b/packages/trpc/server/routers/loggedInViewer/away.schema.ts deleted file mode 100644 index da84660332..0000000000 --- a/packages/trpc/server/routers/loggedInViewer/away.schema.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { z } from "zod"; - -export const ZAwayInputSchema = z.object({ - away: z.boolean(), -}); - -export type TAwayInputSchema = z.infer; diff --git a/packages/trpc/server/routers/loggedInViewer/me.handler.ts b/packages/trpc/server/routers/loggedInViewer/me.handler.ts index 9759eaa45f..b7215107d1 100644 --- a/packages/trpc/server/routers/loggedInViewer/me.handler.ts +++ b/packages/trpc/server/routers/loggedInViewer/me.handler.ts @@ -97,7 +97,6 @@ export const meHandler = async ({ ctx, input }: MeOptions) => { identityProviderEmail, brandColor: user.brandColor, darkBrandColor: user.darkBrandColor, - away: user.away, bio: user.bio, weekStart: user.weekStart, theme: user.theme,