import { Alert, CloseIcon, Dialog, DialogContent, DialogTitle, IconButton, LoadingButton, SearchIcon, Typography } from "@firecms/ui"; import { useProjectConfig } from "../../hooks"; import { EntityCollection, useSnackbarController, useTranslation } from "@firecms/core"; import { useState } from "react"; import { CollectionsConfigController } from "@firecms/collection_editor"; export function TextSearchInfoDialog({ open, closeDialog, collection, collectionConfigController, parentCollectionIds, hasOwnTextSearchImplementation }: { open: boolean, closeDialog: () => void, path: string, collection: EntityCollection, collectionConfigController: CollectionsConfigController, parentCollectionIds?: string[], hasOwnTextSearchImplementation: boolean }) { const { t } = useTranslation(); const snackbarController = useSnackbarController(); const projectConfig = useProjectConfig(); const [enablingLocalSearch, setEnablingLocalSearch] = useState(false); const [enablingForCollection, setEnablingForCollection] = useState(false); function enableTextSearchForCollection() { return collectionConfigController.updateCollection({ id: collection.id, parentCollectionIds, collectionData: { id: collection.id, textSearchEnabled: true } }) } return !open ? closeDialog() : undefined} > {t("text_search_dialog_title")} {!hasOwnTextSearchImplementation && <>
{t("text_search_local_not_recommended")} {t("text_search_local_fetch_warning")} {t("text_search_external_suggestion")}
{t("text_search_local_description")} } {hasOwnTextSearchImplementation && <> {t("text_search_own_implementation")} }
{(hasOwnTextSearchImplementation || projectConfig.localTextSearchEnabled) && !collection.textSearchEnabled && { setEnablingForCollection(true); enableTextSearchForCollection() .then(() => { snackbarController.open({ message: t("text_search_enabled_snackbar"), type: "success" }); closeDialog(); }) .finally(() => setEnablingForCollection(false)); }}> {t("text_search_enable_for_collection")} } {!hasOwnTextSearchImplementation && !projectConfig.localTextSearchEnabled && { setEnablingLocalSearch(true); projectConfig.updateLocalTextSearchEnabled(true) .then(async () => { if (!collection.textSearchEnabled) await enableTextSearchForCollection(); snackbarController.open({ message: t("text_search_enabled_snackbar"), type: "success" }); closeDialog(); }) .finally(() => setEnablingLocalSearch(false)); }}> {t("text_search_enable_for_project")} }
; }