Skip to content

Commit 5eba72c

Browse files
committed
feat: add UserSessionsDataTableComponent for displaying user session data
1 parent 1ab3948 commit 5eba72c

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"use client"
2+
3+
import React from "react";
4+
import {
5+
DataTable,
6+
DataTableColumn,
7+
ScrollArea,
8+
ScrollAreaScrollbar, ScrollAreaThumb,
9+
ScrollAreaViewport,
10+
Text,
11+
useService,
12+
useStore
13+
} from "@code0-tech/pictor";
14+
import {User, UserSession} from "@code0-tech/sagittarius-graphql-types";
15+
import {UserService} from "@edition/user/services/User.service";
16+
import {UserSessionsDataTableRowComponent} from "@edition/user/components/UserSessionsDataTableRowComponent";
17+
18+
export interface UserSessionsDataTableComponentProps {
19+
userId: User['id']
20+
}
21+
22+
export const UserSessionsDataTableComponent: React.FC<UserSessionsDataTableComponentProps> = (props) => {
23+
24+
const {userId} = props
25+
26+
const userService = useService(UserService)
27+
const userStore = useStore(UserService)
28+
29+
const sessions = React.useMemo(
30+
() => (userService.getById(userId)?.sessions?.nodes ?? []).filter((session): session is UserSession => !!session && !!session.active),
31+
[userStore, userId]
32+
)
33+
34+
return <ScrollArea w={"100%"} h={"100%"} type={"scroll"}>
35+
<ScrollAreaViewport>
36+
<DataTable filter={{}}
37+
sort={{}}
38+
emptyComponent={<DataTableColumn>
39+
<Text>No sessions found for this user.</Text>
40+
</DataTableColumn>}
41+
data={sessions}>
42+
{(session) => <UserSessionsDataTableRowComponent userId={userId} sessionId={session.id}/>}
43+
</DataTable>
44+
</ScrollAreaViewport>
45+
<ScrollAreaScrollbar orientation={"vertical"}>
46+
<ScrollAreaThumb/>
47+
</ScrollAreaScrollbar>
48+
</ScrollArea>
49+
}

0 commit comments

Comments
 (0)