From dc78e68c37ddea993efba8c3c57c3a8fdf15f8b6 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Mon, 30 Dec 2024 16:56:05 +0800 Subject: [PATCH 1/4] feat(action): issue change title notifications - Add `IssueChangeTitle` method to handle issue title changes - Add `notifyIssueChangeWithTitleOrContent` method to generalize notification handling for issue title or content changes - Replace hardcoded `api.HookIssueEdited` with dynamic `action` parameter in notification payloads Signed-off-by: Bo-Yi Wu --- services/actions/notifier.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/actions/notifier.go b/services/actions/notifier.go index a4ebdf9e888ee..ddaff7d241099 100644 --- a/services/actions/notifier.go +++ b/services/actions/notifier.go @@ -58,7 +58,15 @@ func (n *actionsNotifier) NewIssue(ctx context.Context, issue *issues_model.Issu // IssueChangeContent notifies change content of issue func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string) { ctx = withMethod(ctx, "IssueChangeContent") + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, oldContent, api.HookIssueEdited) +} + +func (n *actionsNotifier) IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string) { + ctx = withMethod(ctx, "IssueChangeTitle") + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, oldTitle, api.HookIssueEdited) +} +func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, _ string, action api.HookIssueAction) { var err error if err = issue.LoadRepo(ctx); err != nil { log.Error("LoadRepo: %v", err) @@ -74,7 +82,7 @@ func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_mod newNotifyInputFromIssue(issue, webhook_module.HookEventPullRequest). WithDoer(doer). WithPayload(&api.PullRequestPayload{ - Action: api.HookIssueEdited, + Action: action, Index: issue.Index, PullRequest: convert.ToAPIPullRequest(ctx, issue.PullRequest, nil), Repository: convert.ToRepo(ctx, issue.Repo, access_model.Permission{AccessMode: perm_model.AccessModeNone}), @@ -87,7 +95,7 @@ func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_mod newNotifyInputFromIssue(issue, webhook_module.HookEventIssues). WithDoer(doer). WithPayload(&api.IssuePayload{ - Action: api.HookIssueEdited, + Action: action, Index: issue.Index, Issue: convert.ToAPIIssue(ctx, doer, issue), Repository: convert.ToRepo(ctx, issue.Repo, permission), From 5e3e00f91d1f9fb3ba7a778f494158b32d413959 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Tue, 31 Dec 2024 19:23:56 +0800 Subject: [PATCH 2/4] Update services/actions/notifier.go --- services/actions/notifier.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/actions/notifier.go b/services/actions/notifier.go index ddaff7d241099..99163d841779c 100644 --- a/services/actions/notifier.go +++ b/services/actions/notifier.go @@ -58,15 +58,15 @@ func (n *actionsNotifier) NewIssue(ctx context.Context, issue *issues_model.Issu // IssueChangeContent notifies change content of issue func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string) { ctx = withMethod(ctx, "IssueChangeContent") - n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, oldContent, api.HookIssueEdited) + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, api.HookIssueEdited) } func (n *actionsNotifier) IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string) { ctx = withMethod(ctx, "IssueChangeTitle") - n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, oldTitle, api.HookIssueEdited) + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, api.HookIssueEdited) } -func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, _ string, action api.HookIssueAction) { +func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, action api.HookIssueAction) { var err error if err = issue.LoadRepo(ctx); err != nil { log.Error("LoadRepo: %v", err) From 9bb6ecc2c9c52b6b65ae6ba369e9ac51f85354c2 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Tue, 31 Dec 2024 19:43:26 +0800 Subject: [PATCH 3/4] Update notifier.go --- services/actions/notifier.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/actions/notifier.go b/services/actions/notifier.go index 99163d841779c..87a1a734c5ecf 100644 --- a/services/actions/notifier.go +++ b/services/actions/notifier.go @@ -58,15 +58,15 @@ func (n *actionsNotifier) NewIssue(ctx context.Context, issue *issues_model.Issu // IssueChangeContent notifies change content of issue func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string) { ctx = withMethod(ctx, "IssueChangeContent") - n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, api.HookIssueEdited) + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue) } func (n *actionsNotifier) IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldTitle string) { ctx = withMethod(ctx, "IssueChangeTitle") - n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue, api.HookIssueEdited) + n.notifyIssueChangeWithTitleOrContent(ctx, doer, issue) } -func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, action api.HookIssueAction) { +func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue) { var err error if err = issue.LoadRepo(ctx); err != nil { log.Error("LoadRepo: %v", err) @@ -82,7 +82,7 @@ func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Contex newNotifyInputFromIssue(issue, webhook_module.HookEventPullRequest). WithDoer(doer). WithPayload(&api.PullRequestPayload{ - Action: action, + Action: api.HookIssueEdited, Index: issue.Index, PullRequest: convert.ToAPIPullRequest(ctx, issue.PullRequest, nil), Repository: convert.ToRepo(ctx, issue.Repo, access_model.Permission{AccessMode: perm_model.AccessModeNone}), From dc869b08509ef48c85c64034fd923f082d6abfec Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Tue, 31 Dec 2024 19:44:12 +0800 Subject: [PATCH 4/4] Update notifier.go --- services/actions/notifier.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/actions/notifier.go b/services/actions/notifier.go index 87a1a734c5ecf..67e33e7cce0a8 100644 --- a/services/actions/notifier.go +++ b/services/actions/notifier.go @@ -95,7 +95,7 @@ func (n *actionsNotifier) notifyIssueChangeWithTitleOrContent(ctx context.Contex newNotifyInputFromIssue(issue, webhook_module.HookEventIssues). WithDoer(doer). WithPayload(&api.IssuePayload{ - Action: action, + Action: api.HookIssueEdited, Index: issue.Index, Issue: convert.ToAPIIssue(ctx, doer, issue), Repository: convert.ToRepo(ctx, issue.Repo, permission),