import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useDataProvider, useNotify, useTranslate } from "ra-core"; import { Button } from "@/components/ds/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ds/ui/dialog"; import { Input } from "@/components/ds/ui/input"; import { Label } from "@/components/ds/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ds/ui/select"; import { Loader2 } from "lucide-react"; interface CreateChannelDialogProps { open: boolean; onClose: () => void; } export const CreateChannelDialog = ({ open, onClose, }: CreateChannelDialogProps) => { const [providerCode, setProviderCode] = useState("twilio"); const [name, setName] = useState(""); const [authToken, setAuthToken] = useState(""); const dataProvider = useDataProvider(); const notify = useNotify(); const queryClient = useQueryClient(); const translate = useTranslate(); const createMutation = useMutation({ mutationFn: async () => { // Generate a cryptographically secure random ingestion key const ingestionKey = "ik_live_" + crypto.randomUUID().replace(/-/g, ""); const config: any = {}; if (authToken) { config.auth_token = authToken; } await dataProvider.create("ingestion_providers", { data: { name, provider_code: providerCode, is_active: true, config, ingestion_key: ingestionKey, }, }); }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["ingestion_providers"] }); notify(translate("crm.integrations.ingestion.notification.created")); onClose(); // Reset form setName(""); setAuthToken(""); setProviderCode("twilio"); }, onError: (error: Error) => { notify( translate("crm.integrations.ingestion.notification.error_creating", { message: error.message, }), { type: "error" }, ); }, }); return ( {translate("crm.integrations.ingestion.action.add")} {translate("crm.integrations.ingestion.dialog.create_description")}
setName(e.target.value)} />
{providerCode === "twilio" && (
setAuthToken(e.target.value)} />

{translate("crm.integrations.ingestion.dialog.token_hint")}

)}
); };