Skip to content

Commit f1433d2

Browse files
feat: user grant card
1 parent c3c7df1 commit f1433d2

3 files changed

Lines changed: 41 additions & 2 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"use client"
2+
import { useQuery } from "@tanstack/react-query"
3+
import { format } from "date-fns"
4+
import { Sparkle, Star } from "lucide-react"
5+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
6+
import { useTRPC } from "@/lib/trpc/client"
7+
import type { TgUser } from "@/lib/trpc/types"
8+
import { DeleteGrant } from "../grants/delete-grant"
9+
10+
export function UserGrantCard({ user }: { user: TgUser }) {
11+
const trpc = useTRPC()
12+
const { data } = useQuery(trpc.tg.grants.checkUser.queryOptions({ userId: user.id }))
13+
14+
if (!data) return null
15+
return (
16+
data.grant && (
17+
<Card className="w-fit min-w-120">
18+
<CardHeader>
19+
<CardTitle className="flex gap-2 items-center">
20+
<Sparkle size={20} /> Ongoing Grant
21+
</CardTitle>
22+
<CardDescription>This user has an ongoing grant</CardDescription>
23+
</CardHeader>
24+
<CardContent className="space-y-2">
25+
<p>Start: {format(data.grant.validSince, "yyyy/MM/dd HH:mm")}</p>
26+
<p>End: {format(data.grant.validUntil, "yyyy/MM/dd HH:mm")}</p>
27+
</CardContent>
28+
<CardFooter className="gap-2">
29+
<DeleteGrant userId={user.id} />
30+
</CardFooter>
31+
</Card>
32+
)
33+
)
34+
}

src/app/dashboard/(active)/telegram/user-details/card-user-info.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export function UserInfoCard({ user, roles }: { user: NonNullable<User>; roles:
1818
<Card className="w-fit min-w-120">
1919
<CardHeader>
2020
<CardTitle>
21-
User ID: {user.id}{" "}
21+
# User ID: {user.id}{" "}
2222
{isSelf && (
2323
<Badge>
2424
<Star /> You

src/app/dashboard/(active)/telegram/user-details/page.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import type { ApiOutput } from "@/lib/trpc/types"
1212
import { AuditLogCard } from "./card-audit-log"
1313
import { GroupAdminCard } from "./card-group-admin"
1414
import { MessageCard } from "./card-message"
15+
import { UserGrantCard } from "./card-user-grant"
1516
import { UserInfoCard } from "./card-user-info"
1617
import { NewGroupAdmin } from "./new-group-admin"
1718

@@ -102,7 +103,11 @@ export default function TgUsers() {
102103

103104
{user && (
104105
<>
105-
<UserInfoCard user={user} roles={userData?.roles ?? []} />
106+
<div className="grid grid-cols-3 items-start">
107+
<UserInfoCard user={user} roles={userData?.roles ?? []} />
108+
<UserGrantCard user={user} />
109+
</div>
110+
106111
<div className="pt-6 flex gap-4 items-center">
107112
<p>Admin in groups:</p>
108113
<NewGroupAdmin user={user} alreadyIn={userData?.groupAdmin.map((g) => g?.group.id ?? 0) ?? []} />

0 commit comments

Comments
 (0)