diff --git a/src/app/(app)/stls/_components/stl-table.tsx b/src/app/(app)/stls/_components/stl-table.tsx index f903380..7ed8409 100644 --- a/src/app/(app)/stls/_components/stl-table.tsx +++ b/src/app/(app)/stls/_components/stl-table.tsx @@ -8,6 +8,7 @@ import { useDataTable } from "@/hooks/use-data-table"; import { getPackageColumns, type PackageRow } from "./package-columns"; import { PackageFilesDrawer } from "./package-files-drawer"; import { IngestionStatus } from "./ingestion-status"; +import { SkippedPackagesTab } from "./skipped-packages-tab"; import { DataTable } from "@/components/shared/data-table"; import { DataTablePagination } from "@/components/shared/data-table-pagination"; import { DataTableViewOptions } from "@/components/shared/data-table-view-options"; @@ -20,7 +21,10 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Badge } from "@/components/ui/badge"; import type { IngestionAccountStatus } from "@/lib/telegram/types"; +import type { SkippedRow } from "./skipped-columns"; import { updatePackageCreator, updatePackageTags } from "../actions"; interface StlTableProps { @@ -30,6 +34,9 @@ interface StlTableProps { ingestionStatus: IngestionAccountStatus[]; availableTags: string[]; searchTerm: string; + skippedData: SkippedRow[]; + skippedPageCount: number; + skippedTotalCount: number; } export function StlTable({ @@ -39,6 +46,9 @@ export function StlTable({ ingestionStatus, availableTags, searchTerm, + skippedData, + skippedPageCount, + skippedTotalCount, }: StlTableProps) { const router = useRouter(); const pathname = usePathname(); @@ -77,6 +87,22 @@ export function StlTable({ [router, pathname, searchParams] ); + const activeTab = searchParams.get("tab") ?? "packages"; + + const updateTab = useCallback( + (value: string) => { + const params = new URLSearchParams(searchParams.toString()); + if (value === "packages") { + params.delete("tab"); + } else { + params.set("tab", value); + } + params.set("page", "1"); + router.push(`${pathname}?${params.toString()}`, { scroll: false }); + }, + [router, pathname, searchParams] + ); + const columns = getPackageColumns({ onViewFiles: (pkg) => setViewPkg(pkg), searchTerm, @@ -125,39 +151,63 @@ export function StlTable({ -
-
- - updateSearch(e.target.value)} - className="pl-9 h-9" - /> -
- {availableTags.length > 0 && ( - - )} - -
+ + + Packages + + Skipped / Failed + {skippedTotalCount > 0 && ( + + {skippedTotalCount} + + )} + + - - + +
+
+ + updateSearch(e.target.value)} + className="pl-9 h-9" + /> +
+ {availableTags.length > 0 && ( + + )} + +
+ + + +
+ + + + +
); }