From f5076454cd644a99439b697f24bb0b1f871b2205 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Tue, 31 Dec 2024 11:40:37 +0100 Subject: [PATCH] feat(integration): add search engine creation (#1816) Co-authored-by: Meier Lukas --- .vscode/settings.json | 2 +- .../new/_integration-new-form.tsx | 17 +- .../router/integration/integration-router.ts | 44 + .../integration/integration-router.spec.ts | 44 + .../migrations/mysql/0018_mighty_shaman.sql | 1 + .../migrations/mysql/meta/0018_snapshot.json | 1668 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../sqlite/0018_cheerful_tattoo.sql | 1 + .../migrations/sqlite/meta/0018_snapshot.json | 1593 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 2 +- packages/db/schema/sqlite.ts | 2 +- packages/icons/index.ts | 1 + packages/icons/src/auto-icon-searcher.ts | 9 + packages/translation/src/lang/en.json | 4 + packages/validation/src/integration.ts | 1 + 16 files changed, 3398 insertions(+), 5 deletions(-) create mode 100644 packages/db/migrations/mysql/0018_mighty_shaman.sql create mode 100644 packages/db/migrations/mysql/meta/0018_snapshot.json create mode 100644 packages/db/migrations/sqlite/0018_cheerful_tattoo.sql create mode 100644 packages/db/migrations/sqlite/meta/0018_snapshot.json create mode 100644 packages/icons/src/auto-icon-searcher.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 2e67df382..51d2500a1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,5 @@ "i18n-ally.localesPaths": [ "packages/translation/src/lang", ], - "i18n-ally.keystyle": "auto", + "i18n-ally.keystyle": "nested", } diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index 791be2938..a223e3bfc 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -3,13 +3,13 @@ import { useCallback } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; -import { Alert, Button, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; +import { Alert, Button, Checkbox, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; import { IconInfoCircle } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions"; -import { getAllSecretKindOptions, getIntegrationName } from "@homarr/definitions"; +import { getAllSecretKindOptions, getIntegrationName, integrationDefs } from "@homarr/definitions"; import type { UseFormReturnType } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { convertIntegrationTestConnectionError } from "@homarr/integrations/client"; @@ -38,6 +38,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => kind, value: "", })), + attemptSearchEngineCreation: true, }, }); const { mutateAsync, isPending } = clientApi.integration.create.useMutation(); @@ -78,6 +79,8 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => ); }; + const supportsSearchEngine = integrationDefs[searchParams.kind].category.flat().includes("search"); + return (
void handleSubmitAsync(value))}> @@ -104,6 +107,16 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => + {supportsSearchEngine && ( + + )} +