feat(github): move PR monitoring to backend with lightweight polling (#502)
This commit is contained in:
@@ -6,7 +6,7 @@ import { cn } from "@/lib/utils";
|
||||
import { useAppStore } from "@/components/state-provider";
|
||||
import type { TaskPR } from "@/lib/types/github";
|
||||
|
||||
function getPRStatusColor(pr: TaskPR): string {
|
||||
export function getPRStatusColor(pr: TaskPR): string {
|
||||
if (pr.state === "merged") return "text-purple-500";
|
||||
if (pr.state === "closed") return "text-red-500";
|
||||
if (pr.review_state === "changes_requested" || pr.checks_state === "failure") {
|
||||
@@ -37,7 +37,11 @@ export function PRTaskIcon({ taskId }: { taskId: string }) {
|
||||
return (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<span className={cn("inline-flex items-center", getPRStatusColor(pr))}>
|
||||
<span
|
||||
data-testid={`pr-task-icon-${taskId}`}
|
||||
data-pr-state={pr.state}
|
||||
className={cn("inline-flex items-center", getPRStatusColor(pr))}
|
||||
>
|
||||
<IconGitPullRequest className="h-3.5 w-3.5" />
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
|
||||
@@ -6,15 +6,10 @@ import { Button } from "@kandev/ui/button";
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from "@kandev/ui/tooltip";
|
||||
import { useDockviewStore } from "@/lib/state/dockview-store";
|
||||
import { useActiveTaskPR, useTaskPR } from "@/hooks/domains/github/use-task-pr";
|
||||
import { getPRStatusColor } from "@/components/github/pr-task-icon";
|
||||
import { useAppStore } from "@/components/state-provider";
|
||||
import type { TaskPR } from "@/lib/types/github";
|
||||
|
||||
function prIconColor(state: string): string {
|
||||
if (state === "merged") return "text-purple-500";
|
||||
if (state === "closed") return "text-red-500";
|
||||
return "text-green-600";
|
||||
}
|
||||
|
||||
function PRStatusIcon({ pr }: { pr: TaskPR }) {
|
||||
// Terminal states take priority
|
||||
if (pr.state === "merged") {
|
||||
@@ -55,7 +50,7 @@ export const PRTopbarButton = memo(function PRTopbarButton() {
|
||||
className="cursor-pointer gap-1.5 px-2"
|
||||
onClick={addPRPanel}
|
||||
>
|
||||
<IconGitPullRequest className={`h-4 w-4 ${prIconColor(pr.state)}`} />
|
||||
<IconGitPullRequest className={`h-4 w-4 ${getPRStatusColor(pr)}`} />
|
||||
<span className="text-xs font-medium">#{pr.pr_number}</span>
|
||||
<PRStatusIcon pr={pr} />
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user