fix: handle missing comment payload in Forgejo pull_request_review_comment
Forgejo's pull_request_review_comment event does NOT include a top-level `comment` object in the webhook payload. This caused crashes at: - create-initial.ts: context.payload.comment.id (for reply-to-review) - fetcher.ts: context.payload.comment.created_at (for trigger timestamp) Fix: use optional chaining and fall back gracefully — reply-to-review becomes a regular issue comment, trigger timestamp returns undefined. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
a10b0475c0
commit
9d8c96f01e
2 files changed
+22
-9
No files matched your search
@@ -40,7 +40,8 @@ export function extractTriggerTimestamp(
|
||||
} else if (isPullRequestReviewEvent(context)) {
|
||||
return context.payload.review.submitted_at || undefined;
|
||||
} else if (isPullRequestReviewCommentEvent(context)) {
|
||||
return context.payload.comment.created_at || undefined;
|
||||
// Forgejo's pull_request_review_comment payload may lack the `comment` object
|
||||
return (context.payload as any).comment?.created_at || undefined;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
|
||||
@@ -77,14 +77,26 @@ export async function createInitialComment(
|
||||
});
|
||||
}
|
||||
} else if (isPullRequestReviewCommentEvent(context)) {
|
||||
// Only use createReplyForReviewComment if it's a PR review comment AND we have a comment_id
|
||||
response = await octokit.rest.pulls.createReplyForReviewComment({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: context.entityNumber,
|
||||
comment_id: context.payload.comment.id,
|
||||
body: initialBody,
|
||||
});
|
||||
// Only use createReplyForReviewComment if we have a comment_id.
|
||||
// Forgejo's pull_request_review_comment payload lacks the top-level
|
||||
// `comment` object, so fall back to a regular issue comment there.
|
||||
const reviewCommentId = (context.payload as any).comment?.id;
|
||||
if (reviewCommentId) {
|
||||
response = await octokit.rest.pulls.createReplyForReviewComment({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: context.entityNumber,
|
||||
comment_id: reviewCommentId,
|
||||
body: initialBody,
|
||||
});
|
||||
} else {
|
||||
response = await octokit.rest.issues.createComment({
|
||||
owner,
|
||||
repo,
|
||||
issue_number: context.entityNumber,
|
||||
body: initialBody,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// For all other cases (issues, issue comments, or missing comment_id)
|
||||
response = await octokit.rest.issues.createComment({
|
||||
|
||||
Reference in new issue
Block a user