diff --git a/package.json b/package.json index b568047..bd1d12d 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "test:watch": "vitest", "format": "prettier --write .", "lint": "eslint --cache .", + "lint:fix": "eslint --cache --fix .", "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", "typecheck": "npm run typecheck:node && npm run typecheck:web", diff --git a/src/renderer/src/components/PrDrawer.tsx b/src/renderer/src/components/PrDrawer.tsx index aedfd4f..d8263b6 100644 --- a/src/renderer/src/components/PrDrawer.tsx +++ b/src/renderer/src/components/PrDrawer.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useState, useEffect, useCallback } from 'react' import Markdown from 'react-markdown' import remarkGfm from 'remark-gfm' import type { PrDetail, PrCheckRun } from '../../../shared/types' @@ -60,13 +60,10 @@ export default function PrDrawer({ const [loading, setLoading] = useState(true) const [error, setError] = useState(null) - useEffect(() => { - let cancelled = false - // Reset handled via initial state; subsequent fetches reset in callbacks + const fetchPr = useCallback(() => { window.konductorAPI .getPrDetail(cwd, prNumber) .then((d) => { - if (cancelled) return if (d) { setDetail(d) setError(null) @@ -75,16 +72,23 @@ export default function PrDrawer({ } }) .catch(() => { - if (!cancelled) setError('Failed to load PR details') + setError('Failed to load PR details') }) .finally(() => { - if (!cancelled) setLoading(false) + setLoading(false) }) - return () => { - cancelled = true - } }, [cwd, prNumber]) + useEffect(() => { + fetchPr() + }, [fetchPr]) + + const refresh = useCallback(() => { + setLoading(true) + setError(null) + fetchPr() + }, [fetchPr]) + return (
{/* Header */} @@ -96,6 +100,13 @@ export default function PrDrawer({ {detail && {detail.title}}
+