MCPcopy Create free account
hub / github.com/astercloud/aster / SessionDetail

Function SessionDetail

studio/src/pages/SessionDetail.tsx:20–157  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

18import type { SessionMessage } from '../api/types';
19
20export function SessionDetail() {
21 const { id } = useParams<{ id: string }>();
22 const navigate = useNavigate();
23 const { data: session, isLoading, refetch, isFetching } = useSession(id || '');
24
25 if (!id) {
26 return <div>Invalid session ID</div>;
27 }
28
29 return (
30 <div className="flex flex-col h-full">
31 <Header
32 title={`Session: ${id.slice(0, 8)}...`}
33 subtitle={session?.agent_name || session?.agent_id}
34 isRefreshing={isFetching}
35 onRefresh={() => refetch()}
36 />
37
38 <div className="flex-1 overflow-auto p-6">
39 {/* Back Button */}
40 <button
41 onClick={() => navigate('/sessions')}
42 className="flex items-center gap-2 text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] mb-4 transition-colors"
43 >
44 <ArrowLeft className="w-4 h-4" />
45 返回列表
46 </button>
47
48 {isLoading ? (
49 <div className="space-y-4">
50 <div className="h-32 bg-[var(--color-surface)] rounded-lg animate-pulse-slow" />
51 <div className="h-64 bg-[var(--color-surface)] rounded-lg animate-pulse-slow" />
52 </div>
53 ) : session ? (
54 <div className="space-y-6">
55 {/* Summary Card */}
56 <div className="card">
57 <div className="flex items-start justify-between mb-4">
58 <div className="flex items-center gap-3">
59 <div className={cn(
60 'w-10 h-10 rounded-lg flex items-center justify-center',
61 session.status === 'active' && 'bg-[var(--color-accent)]/20',
62 session.status === 'completed' && 'bg-[var(--color-success)]/20',
63 session.status === 'suspended' && 'bg-[var(--color-warning)]/20'
64 )}>
65 <MessageSquare className={cn(
66 'w-5 h-5',
67 session.status === 'active' && 'text-[var(--color-accent)]',
68 session.status === 'completed' && 'text-[var(--color-success)]',
69 session.status === 'suspended' && 'text-[var(--color-warning)]'
70 )} />
71 </div>
72 <div>
73 <h2 className="text-xl font-semibold text-[var(--color-text-primary)]">
74 {session.agent_name || session.agent_id || 'Unknown Agent'}
75 </h2>
76 <p className="text-sm text-[var(--color-text-muted)]">
77 {formatDate(session.created_at)}

Callers

nothing calls this directly

Calls 5

useSessionFunction · 0.90
cnFunction · 0.90
formatDateFunction · 0.90
formatNumberFunction · 0.90
formatRelativeTimeFunction · 0.90

Tested by

no test coverage detected