import { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown' import { useParams } from 'common' import dayjs from 'dayjs' import { isNil, noop } from 'lodash' import { Archive, Clock12, Trash2, X } from 'lucide-react' import { useState } from 'react' import { Button, ResizablePanel, Separator, Tabs_Shadcn_, TabsContent_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, } from 'ui' import { MonacoEditor } from '@/components/grid/components/common/MonacoEditor' import { RowAction, RowData } from '@/components/interfaces/Auth/Users/UserOverview' import { useDatabaseQueueMessageArchiveMutation } from '@/data/database-queues/database-queue-messages-archive-mutation' import { useDatabaseQueueMessageDeleteMutation } from '@/data/database-queues/database-queue-messages-delete-mutation' import { PostgresQueueMessage } from '@/data/database-queues/database-queue-messages-infinite-query' import { useDatabaseQueueMessageReadMutation } from '@/data/database-queues/database-queue-messages-read-mutation' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { prettifyJSON } from '@/lib/helpers' export const DATE_FORMAT = 'DD MMM, YYYY HH:mm' interface MessageDetailsPanelProps { selectedMessage: PostgresQueueMessage setSelectedMessage: (value: number | null) => void } const tryFormatInitialValue = (value: string) => { try { const jsonValue = JSON.parse(value) return JSON.stringify(jsonValue) } catch (err) { if (typeof value === 'string') { return value.replaceAll(`\"`, `"`) } else { return JSON.stringify(value) } } } export const MessageDetailsPanel = ({ selectedMessage, setSelectedMessage, }: MessageDetailsPanelProps) => { const { id: _id, childId: queueName } = useParams() const { data: project } = useSelectedProjectQuery() useEscapeKeydown(() => setSelectedMessage(null)) const { mutate: archiveMessage, isPending: isLoadingArchive, isSuccess: isSuccessArchive, } = useDatabaseQueueMessageArchiveMutation() const { mutate: readMessage, isPending: isLoadingRead, isSuccess: isSuccessRead, } = useDatabaseQueueMessageReadMutation() const { mutate: deleteMessage, isPending: isLoadingDelete, isSuccess: isSuccessDelete, } = useDatabaseQueueMessageDeleteMutation() const initialValue = JSON.stringify(selectedMessage?.message) const jsonString = prettifyJSON(!isNil(initialValue) ? tryFormatInitialValue(initialValue) : '') const [view, setView] = useState<'details' | 'suggestion'>('details') return ( { if (panelSize.asPercentage === 0) { setSelectedMessage(null) } }} className="bg-studio border-t pointer-events-auto" >