Claude: address #2

This commit is contained in:
2026-09-28 15:09:16 +00:00
parent 1380eee989
commit 963667a2eb
3 changed files with 137 additions and 9 deletions
+30 -5
View File
@@ -25,13 +25,38 @@ export function classifyEvent(eventName, payload, { ownerLogin, triggerPhrase })
let author;
let text;
let entity; // the issue or pull_request object carrying number/title/body
let isPullRequest;
if (eventName === 'issue_comment' && payload.action === 'created') {
// Gitea (like GitHub) routes comments on both issues and pull requests
// through this single event; payload.issue.pull_request distinguishes them.
author = payload.comment?.user?.login;
text = payload.comment?.body;
entity = payload.issue;
isPullRequest = Boolean(payload.issue?.pull_request);
} else if (eventName === 'issues' && ['opened', 'edited'].includes(payload.action)) {
author = payload.issue?.user?.login;
text = payload.issue?.body;
entity = payload.issue;
isPullRequest = false;
} else if (eventName === 'pull_request' && ['opened', 'edited'].includes(payload.action)) {
author = payload.pull_request?.user?.login;
text = payload.pull_request?.body;
entity = payload.pull_request;
isPullRequest = true;
} else if (eventName === 'pull_request_review_comment' && payload.action === 'created') {
// Inline review comments on a PR's diff; a separate event type from issue_comment.
author = payload.comment?.user?.login;
text = payload.comment?.body;
entity = payload.pull_request;
isPullRequest = true;
} else if (eventName === 'pull_request_review' && payload.action === 'submitted') {
// A review's overall summary comment, left when submitting an approval/rejection.
author = payload.review?.user?.login;
text = payload.review?.body ?? payload.review?.content;
entity = payload.pull_request;
isPullRequest = true;
} else {
return { trigger: null, reason: `event "${eventName}" action "${payload.action}" is not handled` };
}
@@ -42,17 +67,17 @@ export function classifyEvent(eventName, payload, { ownerLogin, triggerPhrase })
if (!text || !text.includes(triggerPhrase)) {
return { trigger: null, reason: `text does not contain trigger phrase "${triggerPhrase}"` };
}
if (!payload.repository?.full_name || !payload.issue?.number) {
if (!payload.repository?.full_name || !entity?.number) {
return { trigger: null, reason: 'payload is missing repository or issue information' };
}
return {
trigger: {
repo: payload.repository.full_name,
issueNumber: payload.issue.number,
issueTitle: payload.issue.title ?? '',
issueBody: payload.issue.body ?? '',
isPullRequest: Boolean(payload.issue.pull_request),
issueNumber: entity.number,
issueTitle: entity.title ?? '',
issueBody: entity.body ?? '',
isPullRequest,
defaultBranch: payload.repository.default_branch || 'main',
requestText: text,
author,