import { useQuery } from '@tanstack/react-query' import { useParams } from 'common' import { RefreshCw, Search } from 'lucide-react' import { useState } from 'react' import { Button, InputGroup, InputGroupAddon, InputGroupInput } from 'ui' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { ComputeInstanceCommandLine } from '../ComputeInstanceCommandLine' import { ComputeLogsColumnRender } from '@/components/interfaces/Settings/Logs/LogColumnRenderers/ComputeLogsColumnRender' import { EXPLORER_DATEPICKER_HELPERS } from '@/components/interfaces/Settings/Logs/Logs.constants' import { LogsDatePicker, type DatePickerValue, } from '@/components/interfaces/Settings/Logs/Logs.DatePickers' import type { LogData } from '@/components/interfaces/Settings/Logs/Logs.types' import { LogTable } from '@/components/interfaces/Settings/Logs/LogTable' import { AlertError } from '@/components/ui/AlertError' import { COMPUTE_INSTANCE_LOG_STREAM_LABEL, computeInstanceLogsQueryOptions, type ComputeInstanceLogStream, } from '@/data/compute/compute-instance-logs-query' import { useDebouncedValue } from '@/hooks/misc/useDebouncedValue' import { CLI_NAME } from '@/lib/constants/compute' interface ComputeInstanceLogsTabProps { instanceName: string stream: ComputeInstanceLogStream } const defaultDateRange = (): DatePickerValue => { const helper = EXPLORER_DATEPICKER_HELPERS.find((helper) => helper.text === 'Last 24 hours')! return { from: helper.calcFrom(), to: helper.calcTo(), isHelper: true, text: helper.text, } } export const ComputeInstanceLogsTab = ({ instanceName, stream }: ComputeInstanceLogsTabProps) => { const { ref: projectRef } = useParams() const [selectedLog, setSelectedLog] = useState(null) const [dateRange, setDateRange] = useState(defaultDateRange) const [message, setMessage] = useState('') const debouncedMessage = useDebouncedValue(message, 300) const { data: logs, error, isPending, isError, isFetching, refetch, } = useQuery( computeInstanceLogsQueryOptions({ projectRef, name: instanceName, stream, iso_timestamp_start: dateRange.from, iso_timestamp_end: dateRange.to, message: debouncedMessage, }) ) const label = COMPUTE_INSTANCE_LOG_STREAM_LABEL[stream].toLowerCase() return (
setMessage(event.target.value)} />
{isError && (
)} {!isError && isPending && (
)} {!isError && !isPending && (
setSelectedLog(log)} EmptyState={

No {label} in the selected time range

Follow them from the Supabase CLI while you wait for traffic.

} />
)}
) }