Skip to content

Commit c6246c9

Browse files
refactor: Eventtype app context after orgs (#10781)
Co-authored-by: Hariom Balhara <[email protected]>
1 parent ccc814e commit c6246c9

File tree

16 files changed

+37
-61
lines changed

16 files changed

+37
-61
lines changed

packages/app-store/EventTypeAppContext.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,42 @@ export type GetAppData = (key: string) => unknown;
55
export type SetAppData = (key: string, value: unknown) => void;
66
type LockedIcon = JSX.Element | false | undefined;
77
type Disabled = boolean | undefined;
8+
9+
type AppContext = {
10+
getAppData: GetAppData;
11+
setAppData: SetAppData;
12+
LockedIcon?: LockedIcon;
13+
disabled?: Disabled;
14+
};
15+
816
// eslint-disable-next-line @typescript-eslint/no-empty-function
9-
const EventTypeAppContext = React.createContext<[GetAppData, SetAppData, LockedIcon, Disabled]>([
10-
() => ({}),
11-
() => ({}),
12-
undefined,
13-
undefined,
14-
]);
17+
const EventTypeAppContext = React.createContext<AppContext>({
18+
getAppData: () => ({}),
19+
setAppData: () => ({}),
20+
});
1521

16-
export type SetAppDataGeneric<TAppData extends ZodType> = <
22+
type SetAppDataGeneric<TAppData extends ZodType> = <
1723
TKey extends keyof z.infer<TAppData>,
1824
TValue extends z.infer<TAppData>[TKey]
1925
>(
2026
key: TKey,
2127
value: TValue
2228
) => void;
2329

24-
export type GetAppDataGeneric<TAppData extends ZodType> = <TKey extends keyof z.infer<TAppData>>(
30+
type GetAppDataGeneric<TAppData extends ZodType> = <TKey extends keyof z.infer<TAppData>>(
2531
key: TKey
2632
) => z.infer<TAppData>[TKey];
2733

2834
export const useAppContextWithSchema = <TAppData extends ZodType>() => {
2935
type GetAppData = GetAppDataGeneric<TAppData>;
3036
type SetAppData = SetAppDataGeneric<TAppData>;
3137
// TODO: Not able to do it without type assertion here
32-
const context = React.useContext(EventTypeAppContext) as [GetAppData, SetAppData, LockedIcon, Disabled];
38+
const context = React.useContext(EventTypeAppContext) as {
39+
getAppData: GetAppData;
40+
setAppData: SetAppData;
41+
LockedIcon: LockedIcon;
42+
disabled: Disabled;
43+
};
3344
return context;
3445
};
3546
export default EventTypeAppContext;

packages/app-store/_components/AppCard.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { useAutoAnimate } from "@formkit/auto-animate/react";
22
import Link from "next/link";
33

4+
import { useAppContextWithSchema } from "@calcom/app-store/EventTypeAppContext";
45
import { classNames } from "@calcom/lib";
56
import type { RouterOutputs } from "@calcom/trpc/react";
67
import { Switch, Badge, Avatar } from "@calcom/ui";
78

8-
import type { SetAppDataGeneric } from "../EventTypeAppContext";
9-
import type { eventTypeAppCardZod } from "../eventTypeAppCardZod";
109
import type { CredentialOwner } from "../types";
1110
import OmniInstallAppButton from "./OmniInstallAppButton";
1211

@@ -16,24 +15,20 @@ export default function AppCard({
1615
switchOnClick,
1716
switchChecked,
1817
children,
19-
setAppData,
2018
returnTo,
2119
teamId,
22-
disableSwitch,
23-
LockedIcon,
2420
}: {
2521
app: RouterOutputs["viewer"]["integrations"]["items"][number] & { credentialOwner?: CredentialOwner };
2622
description?: React.ReactNode;
2723
switchChecked?: boolean;
2824
switchOnClick?: (e: boolean) => void;
2925
children?: React.ReactNode;
30-
setAppData: SetAppDataGeneric<typeof eventTypeAppCardZod>;
3126
returnTo?: string;
3227
teamId?: number;
33-
disableSwitch?: boolean;
3428
LockedIcon?: React.ReactNode;
3529
}) {
3630
const [animationRef] = useAutoAnimate<HTMLDivElement>();
31+
const { setAppData, LockedIcon, disabled } = useAppContextWithSchema();
3732

3833
return (
3934
<div
@@ -92,7 +87,7 @@ export default function AppCard({
9287
{app?.isInstalled || app.credentialOwner ? (
9388
<div className="ml-auto flex items-center">
9489
<Switch
95-
disabled={!app.enabled || disableSwitch}
90+
disabled={!app.enabled || disabled}
9691
onCheckedChange={(enabled) => {
9792
if (switchOnClick) {
9893
switchOnClick(enabled);

packages/app-store/_components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const EventTypeAppCard = (props: {
1919
const { app, getAppData, setAppData, LockedIcon, disabled } = props;
2020
return (
2121
<ErrorBoundary message={`There is some problem with ${app.name} App`}>
22-
<EventTypeAppContext.Provider value={[getAppData, setAppData, LockedIcon, disabled]}>
22+
<EventTypeAppContext.Provider value={{ getAppData, setAppData, LockedIcon, disabled }}>
2323
<DynamicComponent
2424
slug={app.slug === "stripe" ? "stripepayment" : app.slug}
2525
componentMap={EventTypeAddonMap}

packages/app-store/_utils/useIsAppEnabled.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useAppContextWithSchema } from "@calcom/app-store/EventTypeAppContext";
55
import type { EventTypeAppCardApp } from "../types";
66

77
function useIsAppEnabled(app: EventTypeAppCardApp) {
8-
const [getAppData, setAppData] = useAppContextWithSchema();
8+
const { getAppData, setAppData } = useAppContextWithSchema();
99
const [enabled, setEnabled] = useState(() => {
1010
if (!app.credentialOwner) {
1111
return getAppData("enabled");

packages/app-store/basecamp3/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Select } from "@calcom/ui";
99
import type { appDataSchema } from "../zod";
1010

1111
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app }) {
12-
const [getAppData, setAppData] = useAppContextWithSchema<typeof appDataSchema>();
12+
const { getAppData } = useAppContextWithSchema<typeof appDataSchema>();
1313
const [enabled, setEnabled] = useState(getAppData("enabled"));
1414
const [projects, setProjects] = useState();
1515
const [selectedProject, setSelectedProject] = useState<undefined | { label: string; value: string }>();
@@ -32,7 +32,6 @@ const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({
3232

3333
return (
3434
<AppCard
35-
setAppData={setAppData}
3635
app={app}
3736
switchOnClick={(e) => {
3837
if (!e) {

packages/app-store/fathom/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ import { TextField } from "@calcom/ui";
77
import type { appDataSchema } from "../zod";
88

99
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app, eventType }) {
10-
const [getAppData, setAppData, LockedIcon, disabled] = useAppContextWithSchema<typeof appDataSchema>();
10+
const { getAppData, setAppData, disabled } = useAppContextWithSchema<typeof appDataSchema>();
1111
const trackingId = getAppData("trackingId");
1212
const { enabled, updateEnabled } = useIsAppEnabled(app);
1313

1414
return (
1515
<AppCard
16-
setAppData={setAppData}
1716
app={app}
18-
disableSwitch={disabled}
19-
LockedIcon={LockedIcon}
2017
switchOnClick={(e) => {
2118
updateEnabled(e);
2219
}}

packages/app-store/ga4/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ import { TextField } from "@calcom/ui";
77
import type { appDataSchema } from "../zod";
88

99
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app, eventType }) {
10-
const [getAppData, setAppData, LockedIcon, disabled] = useAppContextWithSchema<typeof appDataSchema>();
10+
const { getAppData, setAppData, disabled } = useAppContextWithSchema<typeof appDataSchema>();
1111
const trackingId = getAppData("trackingId");
1212
const { enabled, updateEnabled } = useIsAppEnabled(app);
1313

1414
return (
1515
<AppCard
16-
setAppData={setAppData}
1716
app={app}
18-
disableSwitch={disabled}
19-
LockedIcon={LockedIcon}
2017
switchOnClick={(e) => {
2118
updateEnabled(e);
2219
}}

packages/app-store/giphy/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,16 @@ import { useLocale } from "@calcom/lib/hooks/useLocale";
88
import type { appDataSchema } from "../zod";
99

1010
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app, eventType }) {
11-
const [getAppData, setAppData, LockedIcon, disabled] = useAppContextWithSchema<typeof appDataSchema>();
11+
const { getAppData, setAppData, disabled } = useAppContextWithSchema<typeof appDataSchema>();
1212
const thankYouPage = getAppData("thankYouPage");
1313
const { enabled: showGifSelection, updateEnabled: setShowGifSelection } = useIsAppEnabled(app);
1414

1515
const { t } = useLocale();
1616

1717
return (
1818
<AppCard
19-
setAppData={setAppData}
2019
app={app}
2120
description={t("confirmation_page_gif")}
22-
disableSwitch={disabled}
23-
LockedIcon={LockedIcon}
2421
switchOnClick={(e) => {
2522
setShowGifSelection(e);
2623
}}

packages/app-store/gtm/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ import { TextField } from "@calcom/ui";
77
import type { appDataSchema } from "../zod";
88

99
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app, eventType }) {
10-
const [getAppData, setAppData, LockedIcon, disabled] = useAppContextWithSchema<typeof appDataSchema>();
10+
const { getAppData, setAppData, disabled } = useAppContextWithSchema<typeof appDataSchema>();
1111
const trackingId = getAppData("trackingId");
1212
const { enabled, updateEnabled } = useIsAppEnabled(app);
1313

1414
return (
1515
<AppCard
16-
setAppData={setAppData}
1716
app={app}
18-
disableSwitch={disabled}
19-
LockedIcon={LockedIcon}
2017
switchOnClick={(e) => {
2118
updateEnabled(e);
2219
}}

packages/app-store/metapixel/components/EventTypeAppCardInterface.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ import { TextField } from "@calcom/ui";
77
import type { appDataSchema } from "../zod";
88

99
const EventTypeAppCard: EventTypeAppCardComponent = function EventTypeAppCard({ app, eventType }) {
10-
const [getAppData, setAppData, LockedIcon, disabled] = useAppContextWithSchema<typeof appDataSchema>();
10+
const { getAppData, setAppData, disabled } = useAppContextWithSchema<typeof appDataSchema>();
1111
const trackingId = getAppData("trackingId");
1212
const { enabled, updateEnabled } = useIsAppEnabled(app);
1313

1414
return (
1515
<AppCard
16-
setAppData={setAppData}
1716
app={app}
18-
disableSwitch={disabled}
19-
LockedIcon={LockedIcon}
2017
switchOnClick={updateEnabled}
2118
switchChecked={enabled}
2219
teamId={eventType.team?.id || undefined}>

0 commit comments

Comments
 (0)