import { useState } from "react"; import { LuPencil, LuPlus, LuTrash2, LuX } from "react-icons/lu"; import { errorMessage } from "../api/client.js"; import { useDeleteSecret, useOwners, useSecrets, useUpsertSecret, } from "../api/hooks.js"; import { formatTime } from "../lib/format.jsx"; export function SecretsPage() { const { data: owners = [] } = useOwners(); const [ownerFilter, setOwnerFilter] = useState(""); const { data: secrets = [], isLoading } = useSecrets(ownerFilter || undefined); const upsert = useUpsertSecret(); const del = useDeleteSecret(); const [mode, setMode] = useState(null); const [form, setForm] = useState({ owner: "", name: "", value: "", }); const [confirmDelete, setConfirmDelete] = useState(null); function openAdd() { setMode("add"); setForm({ owner: ownerFilter || owners[0] || "default", name: "", value: "", }); } function openReplace(s) { setMode("replace"); setForm({ owner: s.owner, name: s.name, value: "" }); } function closeForm() { setMode(null); setForm({ owner: "", name: "", value: "" }); } function onSubmit(e) { e.preventDefault(); upsert.mutate( { owner: form.owner, name: form.name, value: form.value }, { onSuccess: closeForm }, ); } return (
No secrets yet.
) : (| Owner | Name | Updated | |
|---|---|---|---|
| {s.owner} | {s.name} | {formatTime(s.updated_at)} |