Skip to content

Commit 0a88b67

Browse files
committed
feat: notion connection
1 parent 304e132 commit 0a88b67

File tree

4 files changed

+41
-16
lines changed

4 files changed

+41
-16
lines changed

src/components/organisms/connections/integrations/notion/authMethods/apiKey.tsx

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import React from "react";
1+
import React, { useState } from "react";
22

33
import { FieldErrors, UseFormRegister, useWatch } from "react-hook-form";
44
import { useTranslation } from "react-i18next";
55

6-
import { Button, ErrorMessage, Input, Spinner } from "@components/atoms";
6+
import { Button, ErrorMessage, Input, SecretInput, Spinner } from "@components/atoms";
77

88
import { FloppyDiskIcon } from "@assets/image/icons";
99

1010
export const NotionApiKeyForm = ({
1111
control,
1212
errors,
1313
isLoading,
14+
mode,
1415
register,
16+
setValue,
1517
}: {
1618
control: any;
1719
errors: FieldErrors<any>;
@@ -21,22 +23,45 @@ export const NotionApiKeyForm = ({
2123
setValue: any;
2224
}) => {
2325
const { t } = useTranslation("integrations");
26+
const [lockState, setLockState] = useState<{ apiKey: boolean }>({
27+
apiKey: true,
28+
});
2429

25-
const internalIntegrationSecret = useWatch({ control, name: "internal_integration_secret" });
30+
const apiKey = useWatch({ control, name: "api_key" });
31+
const isEditMode = mode === "edit";
2632

2733
return (
2834
<>
2935
<div className="relative">
30-
<Input
31-
{...register("internal_integration_secret")}
32-
aria-label={t("notion.placeholders.internalIntegrationSecret")}
33-
disabled={isLoading}
34-
isError={!!errors.internal_integration_secret}
35-
isRequired
36-
label={t("notion.placeholders.internalIntegrationSecret")}
37-
value={internalIntegrationSecret}
38-
/>
39-
<ErrorMessage>{errors.internal_integration_secret?.message as string}</ErrorMessage>
36+
{isEditMode ? (
37+
<SecretInput
38+
type="password"
39+
{...register("api_key")}
40+
aria-label={t("notion.placeholders.apiKey")}
41+
disabled={isLoading}
42+
handleInputChange={(newValue) => setValue("api_key", newValue)}
43+
handleLockAction={(newLockState) =>
44+
setLockState((prevState) => ({ ...prevState, apiKey: newLockState }))
45+
}
46+
isError={!!errors.api_key}
47+
isLocked={lockState.apiKey}
48+
isRequired
49+
label={t("notion.placeholders.apiKey")}
50+
value={apiKey}
51+
/>
52+
) : (
53+
<Input
54+
{...register("api_key")}
55+
aria-label={t("notion.placeholders.apiKey")}
56+
disabled={isLoading}
57+
isError={!!errors.api_key}
58+
isRequired
59+
label={t("notion.placeholders.apiKey")}
60+
value={apiKey}
61+
/>
62+
)}
63+
64+
<ErrorMessage>{errors.api_key?.message as string}</ErrorMessage>
4065
</div>
4166

4267
<Button

src/constants/connections/integrationVariablesMapping.constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,6 @@ export const integrationVariablesMapping = {
120120
password: "password",
121121
},
122122
[Integrations.notion]: {
123-
internal_integration_secret: "internal_integration_secret",
123+
apiKey: "api_key",
124124
},
125125
};

src/locales/en/integrations/translation.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@
286286
},
287287
"notion": {
288288
"placeholders": {
289-
"internalIntegrationSecret": "Internal Integration Secret"
289+
"apiKey": "Internal Integration Secret"
290290
}
291291
}
292292
}

src/validations/connection.schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ export const pipedriveIntegrationSchema = z.object({
225225
company_domain: z.string().min(1, "Company domain is required").url({ message: "Invalid url" }),
226226
});
227227
export const notionApiKeyIntegrationSchema = z.object({
228-
internal_integration_secret: z.string().min(1, "Internal Integration Secret is required"),
228+
api_key: z.string().min(1, "Internal Integration Secret is required"),
229229
});
230230

231231
export const oauthSchema = z.object({});

0 commit comments

Comments
 (0)