feat: add user information display in extractions table and update extraction retrieval method
This commit is contained in:
@@ -9,7 +9,8 @@ import {
|
|||||||
CheckCircle,
|
CheckCircle,
|
||||||
Clock,
|
Clock,
|
||||||
ExternalLink,
|
ExternalLink,
|
||||||
Loader2
|
Loader2,
|
||||||
|
User
|
||||||
} from 'lucide-react'
|
} from 'lucide-react'
|
||||||
|
|
||||||
interface ExtractionsRowProps {
|
interface ExtractionsRowProps {
|
||||||
@@ -88,6 +89,14 @@ export function ExtractionsRow({ extraction }: ExtractionsRowProps) {
|
|||||||
<TableCell className="text-center">
|
<TableCell className="text-center">
|
||||||
{getServiceBadge(extraction.service)}
|
{getServiceBadge(extraction.service)}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<User className="h-4 w-4 text-muted-foreground" />
|
||||||
|
<span className="font-medium">
|
||||||
|
{extraction.user_name || 'Unknown'}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<div className="space-y-1">
|
<div className="space-y-1">
|
||||||
{getStatusBadge(extraction.status)}
|
{getStatusBadge(extraction.status)}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ export function ExtractionsTable({ extractions }: ExtractionsTableProps) {
|
|||||||
<TableRow>
|
<TableRow>
|
||||||
<TableHead>Title</TableHead>
|
<TableHead>Title</TableHead>
|
||||||
<TableHead className="text-center">Service</TableHead>
|
<TableHead className="text-center">Service</TableHead>
|
||||||
|
<TableHead>User</TableHead>
|
||||||
<TableHead>Status</TableHead>
|
<TableHead>Status</TableHead>
|
||||||
<TableHead>Created</TableHead>
|
<TableHead>Created</TableHead>
|
||||||
<TableHead className="text-center">Actions</TableHead>
|
<TableHead className="text-center">Actions</TableHead>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export interface ExtractionInfo {
|
|||||||
service_id?: string
|
service_id?: string
|
||||||
sound_id?: number
|
sound_id?: number
|
||||||
user_id: number
|
user_id: number
|
||||||
|
user_name?: string
|
||||||
error?: string
|
error?: string
|
||||||
created_at: string
|
created_at: string
|
||||||
updated_at: string
|
updated_at: string
|
||||||
@@ -56,9 +57,9 @@ export class ExtractionsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get user's extractions
|
* Get all extractions
|
||||||
*/
|
*/
|
||||||
async getUserExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
|
async getAllExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
|
||||||
const searchParams = new URLSearchParams()
|
const searchParams = new URLSearchParams()
|
||||||
|
|
||||||
if (params?.search) {
|
if (params?.search) {
|
||||||
@@ -80,6 +81,32 @@ export class ExtractionsService {
|
|||||||
const response = await apiClient.get<GetExtractionsResponse>(url)
|
const response = await apiClient.get<GetExtractionsResponse>(url)
|
||||||
return response.extractions
|
return response.extractions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get user's extractions
|
||||||
|
*/
|
||||||
|
async getUserExtractions(params?: GetExtractionsParams): Promise<ExtractionInfo[]> {
|
||||||
|
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<GetExtractionsResponse>(url)
|
||||||
|
return response.extractions
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const extractionsService = new ExtractionsService()
|
export const extractionsService = new ExtractionsService()
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export function ExtractionsPage() {
|
|||||||
try {
|
try {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
setError(null)
|
setError(null)
|
||||||
const data = await extractionsService.getUserExtractions({
|
const data = await extractionsService.getAllExtractions({
|
||||||
search: debouncedSearchQuery.trim() || undefined,
|
search: debouncedSearchQuery.trim() || undefined,
|
||||||
sort_by: sortBy,
|
sort_by: sortBy,
|
||||||
sort_order: sortOrder,
|
sort_order: sortOrder,
|
||||||
|
|||||||
Reference in New Issue
Block a user