'use client'
import { Button } from '@/components/ui/button'
import { PlusCircle, Webhook } from 'lucide-react'
import { useState } from 'react'
import { WebhookData } from '@/lib/types'
import { WebhookCard } from './webhook-card'
import { WebhookDocs } from './webhook-docs'
import { CreateWebhookDialog } from './create-webhook-dialog'
import { EditWebhookDialog } from './edit-webhook-dialog'
import { useQuery, useQueryClient } from '@tanstack/react-query'
import httpBrowserClient from '@/lib/httpBrowserClient'
import { ApiEndpoints } from '@/config/api'
import { Skeleton } from '@/components/ui/skeleton'
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from '@/components/ui/tooltip'
function WebhookCardSkeleton() {
return (
)
}
export default function WebhooksSection() {
const [createDialogOpen, setCreateDialogOpen] = useState(false)
const [editDialogOpen, setEditDialogOpen] = useState(false)
const [selectedWebhook, setSelectedWebhook] = useState(
null
)
const queryClient = useQueryClient()
const {
data: webhooks,
isLoading,
error,
} = useQuery({
queryKey: ['webhooks'],
queryFn: () =>
httpBrowserClient
.get(ApiEndpoints.gateway.getWebhooks())
.then((res) => res.data),
})
const handleCreateClick = () => {
setCreateDialogOpen(true)
}
const handleEditClick = (webhook: WebhookData) => {
setSelectedWebhook(webhook)
setEditDialogOpen(true)
}
return (
Webhooks
Manage webhook notifications for your SMS events
{webhooks?.data?.length > 0 && (
You already have an active webhook subscription. You can edit
or manage the existing webhook instead.
)}
{isLoading ? (
) : error ? (
Error: {error.message}
) : webhooks?.data?.length > 0 ? (
{webhooks.data.map((webhook) => (
handleEditClick(webhook)}
/>
))}
) : (
No webhook configured
Create a webhook to receive real-time notifications for SMS
events
)}
{selectedWebhook && (
)}
)
}