You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
965 B
TypeScript

// frontend/lib/hooks/useApprovals.ts
"use client";
import useSWR from "swr";
import type { ApprovalQueue, Autonomy } from "@/lib/types";
import { approvalsApi } from "@/lib/approvals/api";
export function useApprovals() {
const { data, error, isLoading, mutate } = useSWR<ApprovalQueue>(
"approvals",
() => approvalsApi.queue(),
{ revalidateOnFocus: false },
);
const setAutonomy = async (level: Autonomy) => {
await approvalsApi.setAutonomy(level); // 변경 즉시 큐 재구성
await mutate(); // GET /approvals 가 derive_queue 반영
};
const approve = async (id: string) => {
await approvalsApi.approve(id);
await mutate();
};
const undo = async (id: string) => {
await approvalsApi.undo(id);
await mutate();
};
const approveAll = async () => {
await approvalsApi.approveAll();
await mutate();
};
return { data, error, isLoading, setAutonomy, approve, undo, approveAll, reload: mutate };
}