Claude: address #2
This commit is contained in:
+30
-5
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user