22 lines · 855 B
import { setCodeOwnerRequirement } from "~/fns/pull-review";
import { useAction } from "~/hooks/use-action";
import { Button } from "~/ui/Button";

type Props = { owner: string; repo: string; protectionId: string; enabled: boolean };

/** Toggles "require review from code owners" (CODEOWNERS) on a branch protection rule. */
export function CodeOwnerToggle({ owner, repo, protectionId, enabled }: Props) {
  const toggle = useAction(setCodeOwnerRequirement);
  return (
    <Button
      size="sm"
      variant={enabled ? "primary" : "ghost"}
      pending={toggle.pending}
      title={toggle.error ?? "Require approval from CODEOWNERS of changed files"}
      onClick={() => toggle.run({ data: { owner, repo, protectionId, enabled: !enabled } })}
    >
      {enabled ? "Code owner review required" : "Require code owner review"}
    </Button>
  );
}