diff --git a/packages/app/server/routes/publish.post.ts b/packages/app/server/routes/publish.post.ts index e97f9ad0..0cf61b30 100644 --- a/packages/app/server/routes/publish.post.ts +++ b/packages/app/server/routes/publish.post.ts @@ -1,6 +1,7 @@ import type { H3Event } from "h3"; import type { components as OctokitComponents } from "@octokit/openapi-types"; import type { Comment, PackageManager } from "@pkg-pr-new/utils"; +import type { WorkflowData } from "../types"; import { isPullRequest, isWhitelisted } from "@pkg-pr-new/utils"; import { randomUUID } from "uncrypto"; import { setItemStream, useTemplatesBucket } from "../utils/bucket"; @@ -229,7 +230,10 @@ export default eventHandler(async (event) => { checkRunUrl = html_url!; } - if (isPullRequest(workflowData.ref)) { + if ( + isPullRequest(workflowData.ref) && + (await getPullRequestState(installation, workflowData)) === "open" + ) { let prevComment: OctokitComponents["schemas"]["issue-comment"]; await installation.paginate( @@ -322,6 +326,25 @@ export default eventHandler(async (event) => { }; }); +async function getPullRequestState( + installation: Awaited>, + workflowData: WorkflowData, +) { + try { + const { data: pr } = await installation.request( + "GET /repos/{owner}/{repo}/pulls/{pull_number}", + { + owner: workflowData.owner, + repo: workflowData.repo, + pull_number: Number(workflowData.ref), + }, + ); + return pr.state; + } catch (error) { + return null; + } +} + async function iterateAndDelete( event: H3Event, base: string,