fix: api keys form bugfix and org key sweeper job

Signed-off-by: allanice001 <allanice001@gmail.com>
This commit is contained in:
allanice001
2025-12-12 01:37:42 +00:00
parent 793daf3ac3
commit fd1a81ecd8
11 changed files with 216 additions and 65 deletions

View File

@@ -1,5 +1,4 @@
;
// src/pages/ClustersPage.tsx
import { useEffect, useMemo, useState } from "react";
@@ -28,36 +27,6 @@ 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";
;

View File

@@ -35,10 +35,12 @@ import {
TableRow,
} from "@/components/ui/table.tsx"
// 1) No coerce; well do the conversion in onChange
const createSchema = z.object({
name: z.string(),
expires_in_hours: z.number().min(1).max(43800),
expires_in_hours: z.number().int().min(1).max(43800),
})
type CreateValues = z.infer<typeof createSchema>
export const OrgApiKeys = () => {
@@ -52,6 +54,7 @@ export const OrgApiKeys = () => {
queryFn: () => withRefresh(() => api.listOrgKeys({ id: orgId! })),
})
// 2) Form holds numbers directly
const form = useForm<CreateValues>({
resolver: zodResolver(createSchema),
defaultValues: {
@@ -71,7 +74,7 @@ export const OrgApiKeys = () => {
void qc.invalidateQueries({ queryKey: ["org:keys", orgId] })
setShowSecret({ key: resp.org_key, secret: resp.org_secret })
toast.success("Key created")
form.reset({ name: "", expires_in_hours: undefined })
form.reset({ name: "", expires_in_hours: 720 })
},
onError: (e: any) => toast.error(e?.message ?? "Failed to create key"),
})
@@ -124,7 +127,17 @@ export const OrgApiKeys = () => {
<FormItem>
<FormLabel>Expires In (hours)</FormLabel>
<FormControl>
<Input placeholder="e.g. 720" {...field} />
<Input
type="number"
placeholder="e.g. 720"
{...field}
// 3) Convert string → number (or undefined if empty)
value={field.value ?? ""}
onChange={(e) => {
const v = e.target.value
field.onChange(v === "" ? undefined : Number(v))
}}
/>
</FormControl>
<FormMessage />
</FormItem>