import { useState, useEffect } from "react"; import { useFetcher } from "@remix-run/react"; import { useLogs } from "~/hooks/use-logs"; import { LogsFilters } from "~/components/logs/logs-filters"; import { VirtualLogsList } from "~/components/logs/virtual-logs-list"; import { Card, CardContent } from "~/components/ui/card"; import { Database, LoaderCircle } from "lucide-react"; import { PageHeader } from "~/components/common/page-header"; import { ContributionGraph } from "~/components/activity/contribution-graph"; export default function LogsAll() { const [selectedSource, setSelectedSource] = useState(); const [selectedStatus, setSelectedStatus] = useState(); const contributionFetcher = useFetcher(); const { logs, hasMore, loadMore, availableSources, isLoading, isInitialLoad, } = useLogs({ endpoint: "/api/v1/logs", source: selectedSource, status: selectedStatus, }); // Fetch contribution data on mount useEffect(() => { if (contributionFetcher.state === "idle" && !contributionFetcher.data) { contributionFetcher.load("/api/v1/activity/contribution"); } }, [contributionFetcher]); // Get contribution data from fetcher const contributionData = contributionFetcher.data?.success ? contributionFetcher.data.data.contributionData : []; const totalActivities = contributionFetcher.data?.success ? contributionFetcher.data.data.totalActivities : 0; const isContributionLoading = contributionFetcher.state === "loading" || !contributionFetcher.data; return ( <>
{/* Contribution Graph */}
{isContributionLoading ? ( ) : ( )}
{isInitialLoad ? ( <> ) : ( <> {/* Filters */} {/* Logs List */}
{logs.length === 0 ? (

No logs found

{selectedSource || selectedStatus ? "Try adjusting your filters to see more results." : "No ingestion logs are available yet."}

) : ( )}
)}
); }