From 04401092bbc11232d61512a6cb5afbdd7e4ec71e Mon Sep 17 00:00:00 2001 From: JSC Date: Sun, 17 Aug 2025 01:44:38 +0200 Subject: [PATCH] feat: add user information display in extractions table and update extraction retrieval method --- src/components/extractions/ExtractionsRow.tsx | 11 ++++++- .../extractions/ExtractionsTable.tsx | 1 + src/lib/api/services/extractions.ts | 31 +++++++++++++++++-- src/pages/ExtractionsPage.tsx | 2 +- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/components/extractions/ExtractionsRow.tsx b/src/components/extractions/ExtractionsRow.tsx index 09c60e9..56e8ebd 100644 --- a/src/components/extractions/ExtractionsRow.tsx +++ b/src/components/extractions/ExtractionsRow.tsx @@ -9,7 +9,8 @@ import { CheckCircle, Clock, ExternalLink, - Loader2 + Loader2, + User } from 'lucide-react' interface ExtractionsRowProps { @@ -88,6 +89,14 @@ export function ExtractionsRow({ extraction }: ExtractionsRowProps) { {getServiceBadge(extraction.service)} + +
+ + + {extraction.user_name || 'Unknown'} + +
+
{getStatusBadge(extraction.status)} diff --git a/src/components/extractions/ExtractionsTable.tsx b/src/components/extractions/ExtractionsTable.tsx index 67a5c45..3091430 100644 --- a/src/components/extractions/ExtractionsTable.tsx +++ b/src/components/extractions/ExtractionsTable.tsx @@ -20,6 +20,7 @@ export function ExtractionsTable({ extractions }: ExtractionsTableProps) { Title Service + User Status Created Actions diff --git a/src/lib/api/services/extractions.ts b/src/lib/api/services/extractions.ts index 714cbc3..78535c5 100644 --- a/src/lib/api/services/extractions.ts +++ b/src/lib/api/services/extractions.ts @@ -9,6 +9,7 @@ export interface ExtractionInfo { service_id?: string sound_id?: number user_id: number + user_name?: string error?: string created_at: string updated_at: string @@ -56,9 +57,9 @@ export class ExtractionsService { } /** - * Get user's extractions + * Get all extractions */ - async getUserExtractions(params?: GetExtractionsParams): Promise { + async getAllExtractions(params?: GetExtractionsParams): Promise { const searchParams = new URLSearchParams() if (params?.search) { @@ -80,6 +81,32 @@ export class ExtractionsService { const response = await apiClient.get(url) return response.extractions } + + /** + * Get user's extractions + */ + async getUserExtractions(params?: GetExtractionsParams): Promise { + const searchParams = new URLSearchParams() + + if (params?.search) { + searchParams.append('search', params.search) + } + if (params?.sort_by) { + searchParams.append('sort_by', params.sort_by) + } + if (params?.sort_order) { + searchParams.append('sort_order', params.sort_order) + } + if (params?.status_filter) { + searchParams.append('status_filter', params.status_filter) + } + + const queryString = searchParams.toString() + const url = queryString ? `/api/v1/extractions/user?${queryString}` : '/api/v1/extractions/user' + + const response = await apiClient.get(url) + return response.extractions + } } export const extractionsService = new ExtractionsService() diff --git a/src/pages/ExtractionsPage.tsx b/src/pages/ExtractionsPage.tsx index 86c2bfe..22f9624 100644 --- a/src/pages/ExtractionsPage.tsx +++ b/src/pages/ExtractionsPage.tsx @@ -48,7 +48,7 @@ export function ExtractionsPage() { try { setLoading(true) setError(null) - const data = await extractionsService.getUserExtractions({ + const data = await extractionsService.getAllExtractions({ search: debouncedSearchQuery.trim() || undefined, sort_by: sortBy, sort_order: sortOrder,