From 85f37cd11383777a593e407f7619b0f44fec94ed Mon Sep 17 00:00:00 2001 From: allanice001 Date: Fri, 12 Dec 2025 02:05:31 +0000 Subject: [PATCH] fix: ui updates for org api keys Signed-off-by: allanice001 --- ui/src/pages/cluster-page.tsx | 80 ++++++++++++++++++++++------------- ui/src/pages/org/api-keys.tsx | 29 +++++++++++++ 2 files changed, 79 insertions(+), 30 deletions(-) diff --git a/ui/src/pages/cluster-page.tsx b/ui/src/pages/cluster-page.tsx index 83a650b..d724c38 100644 --- a/ui/src/pages/cluster-page.tsx +++ b/ui/src/pages/cluster-page.tsx @@ -1,36 +1,56 @@ -; // src/pages/ClustersPage.tsx -import { useEffect, useMemo, useState } from "react"; -import { clustersApi } from "@/api/clusters"; -import { dnsApi } from "@/api/dns"; -import { loadBalancersApi } from "@/api/loadbalancers"; -import { nodePoolsApi } from "@/api/node_pools"; -import { serversApi } from "@/api/servers"; -import type { DtoClusterResponse, DtoDomainResponse, DtoLoadBalancerResponse, DtoNodePoolResponse, DtoRecordSetResponse, DtoServerResponse } from "@/sdk"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { AlertCircle, CheckCircle2, CircleSlash2, FileCode2, Globe2, Loader2, MapPin, Pencil, Plus, Search, Server, Wrench } from "lucide-react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; - - - -import { truncateMiddle } from "@/lib/utils"; -import { Badge } from "@/components/ui/badge.tsx"; -import { Button } from "@/components/ui/button.tsx"; -import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog.tsx"; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form.tsx"; -import { Input } from "@/components/ui/input.tsx"; -import { Label } from "@/components/ui/label.tsx"; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select.tsx"; -import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table.tsx"; -import { Textarea } from "@/components/ui/textarea.tsx"; - - - +import { useEffect, useMemo, useState } from "react" +import { clustersApi } from "@/api/clusters" +import { dnsApi } from "@/api/dns" +import { loadBalancersApi } from "@/api/loadbalancers" +import { nodePoolsApi } from "@/api/node_pools" +import { serversApi } from "@/api/servers" +import type { + DtoClusterResponse, + DtoDomainResponse, + DtoLoadBalancerResponse, + DtoNodePoolResponse, + DtoRecordSetResponse, + DtoServerResponse, +} from "@/sdk" +import { zodResolver } from "@hookform/resolvers/zod" +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" +import { + AlertCircle, + CheckCircle2, + CircleSlash2, + FileCode2, + Globe2, + Loader2, + MapPin, + Pencil, + Plus, + Search, + Server, + Wrench, +} from "lucide-react" +import { useForm } from "react-hook-form" +import { toast } from "sonner" +import { z } from "zod" +import { truncateMiddle } from "@/lib/utils" +import { Badge } from "@/components/ui/badge.tsx" +import { Button } from "@/components/ui/button.tsx" +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog.tsx" +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form.tsx" +import { Input } from "@/components/ui/input.tsx" +import { Label } from "@/components/ui/label.tsx" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select.tsx" +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table.tsx" +import { Textarea } from "@/components/ui/textarea.tsx" // --- Schemas --- diff --git a/ui/src/pages/org/api-keys.tsx b/ui/src/pages/org/api-keys.tsx index 210d9ad..34fe17d 100644 --- a/ui/src/pages/org/api-keys.tsx +++ b/ui/src/pages/org/api-keys.tsx @@ -8,6 +8,7 @@ import { useForm } from "react-hook-form" import { toast } from "sonner" import { z } from "zod" +import { Badge } from "@/components/ui/badge.tsx" import { Button } from "@/components/ui/button.tsx" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card.tsx" import { @@ -161,6 +162,7 @@ export const OrgApiKeys = () => { Scope Created Expires + Status @@ -173,6 +175,33 @@ export const OrgApiKeys = () => { {k.expires_at ? new Date(k.expires_at).toLocaleString() : "-"} + + {(() => { + const isExpired = k.expires_at ? new Date(k.expires_at) <= new Date() : false + + if (k.revoked) { + return ( + + Revoked + + ) + } + + if (isExpired) { + return ( + + Expired + + ) + } + + return ( + + Active + + ) + })()} +