import type { GetSubscriptionsQuery } from '@/infra/graphql/gql/graphql'; import type { RouteStateDataOption } from '@/infra/routes/traits'; import { Badge } from '@/views/components/ui/badge'; import { Button } from '@/views/components/ui/button'; import { Card, CardFooter, CardHeader, CardTitle, } from '@/views/components/ui/card'; import { HoverCard, HoverCardContent, HoverCardTrigger, } from '@/views/components/ui/hover-card'; import { Image } from '@/views/components/ui/image'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/views/components/ui/select'; import { useQuery } from '@apollo/client'; import { gql } from '@apollo/client'; import { createFileRoute } from '@tanstack/react-router'; import { useNavigate } from '@tanstack/react-router'; import { useState } from 'react'; export const Route = createFileRoute('/_app/subscriptions/manage')({ component: SubscriptionManageRouteComponent, staticData: { breadcrumb: { label: 'Manage' }, } satisfies RouteStateDataOption, }); // GraphQL query const GET_SUBSCRIPTIONS = gql` query GetSubscriptions($page: Int!, $pageSize: Int!) { subscriptions( pagination: { page: { page: $page, limit: $pageSize } } ) { nodes { id displayName category enabled bangumi { nodes { id displayName posterLink season fansub homepage } } } } } `; function SubscriptionManageRouteComponent() { const navigate = useNavigate(); const [page, setPage] = useState(1); const [pageSize, setPageSize] = useState(10); const [sortBy, setSortBy] = useState('createdAt'); const [sortOrder, setSortOrder] = useState('desc'); const { loading, error, data } = useQuery( GET_SUBSCRIPTIONS, { variables: { page, pageSize, sortBy, sortOrder, }, } ); if (loading) { return
Loading...
; } if (error) { return
Error: {error.message}
; } const { nodes: items } = data?.subscriptions ?? {}; const totalPages = Math.ceil(total / pageSize); return (
{/* Filters and sorting controls */}
{/* Subscription list */}
{items.map((subscription) => (
{subscription.bangumi.displayName}
{subscription.bangumi.displayName}
{subscription.bangumi.extra?.nameZh || subscription.bangumi.displayName}
{subscription.enabled ? 'Enabled' : 'Disabled'} {subscription.bangumi.fansub || 'Unknown Group'}
))}
{/* Pagination controls */}
Page {page} of {totalPages}
); }