import {ColumnConfig} from '@common/datatable/column-config'; import {Trans} from '@common/i18n/trans'; import {NameWithAvatar} from '@common/datatable/column-templates/name-with-avatar'; import {Tooltip} from '@common/ui/tooltip/tooltip'; import {IconButton} from '@common/ui/buttons/icon-button'; import React, {ReactNode} from 'react'; import {useRerunScheduledCommand} from '@common/admin/logging/schedule/use-rerurun-scheduled-command'; import {OutgoingEmailLogItem} from '@common/admin/logging/outgoing-email/outgoing-email-log-item'; import {FormattedRelativeTime} from '@common/i18n/formatted-relative-time'; import {Chip, ChipProps} from '@common/ui/forms/input-field/chip-field/chip'; import {VisibilityIcon} from '@common/icons/material/Visibility'; import {DialogTrigger} from '@common/ui/overlays/dialog/dialog-trigger'; import {OutgoingEmailLogEntryDialog} from '@common/admin/logging/outgoing-email/outgoing-email-log-entry-dialog'; export const OutgoingEmailLogDatatableColumns: ColumnConfig[] = [ { key: 'message_id', allowsSorting: true, visibleInMode: 'all', width: 'flex-3 min-w-200', header: () => , body: item => ( ), }, { key: 'status', allowsSorting: true, header: () => , body: item => { switch (item.status) { case 'sent': return ( ); case 'not-sent': return ( ); case 'error': return ( ); } }, }, { key: 'from', allowsSorting: true, header: () => , body: item => item.from, }, { key: 'to', allowsSorting: true, header: () => , body: item => item.to, }, { key: 'created_at', allowsSorting: true, header: () => , body: item => , }, { key: 'actions', header: () => , hideHeader: true, align: 'end', width: 'w-42 flex-shrink-0', visibleInMode: 'all', body: item => , }, ]; interface PreviewButtonProps { item: OutgoingEmailLogItem; } function PreviewEmailButton({item}: PreviewButtonProps) { const rerunCommand = useRerunScheduledCommand(); return ( }> { rerunCommand.mutate({id: item.id}); }} > ); } interface StatusChipProps { color: ChipProps['color']; children: ReactNode; } function StatusChip({color, children}: StatusChipProps) { return ( {children} ); }