aboutsummaryrefslogtreecommitdiffstats
path: root/models/webhook/hooktask.go
diff options
context:
space:
mode:
authoryp05327 <576951401@qq.com>2023-05-04 08:53:43 +0900
committerGitHub <noreply@github.com>2023-05-03 19:53:43 -0400
commitdbb37367854d108ebfffcac27837c0afac199a8e (patch)
treea0f962e0d6f13ad07adede0ad6066ed760fcaadb /models/webhook/hooktask.go
parent4a722c9a45659e7732258397bbb3dd1039ea1952 (diff)
downloadgitea-dbb37367854d108ebfffcac27837c0afac199a8e.tar.gz
gitea-dbb37367854d108ebfffcac27837c0afac199a8e.zip
Fix incorrect webhook time and use relative-time to display it (#24477)
Fixes #24414 After click replay this webhook, it will display `now` ![image](https://user-images.githubusercontent.com/18380374/235559399-05a23927-13f5-442d-8f10-2c7cd24022a0.png) --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'models/webhook/hooktask.go')
-rw-r--r--models/webhook/hooktask.go41
1 files changed, 21 insertions, 20 deletions
diff --git a/models/webhook/hooktask.go b/models/webhook/hooktask.go
index 8688fe5de3..f9fc886826 100644
--- a/models/webhook/hooktask.go
+++ b/models/webhook/hooktask.go
@@ -12,6 +12,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
+ "code.gitea.io/gitea/modules/timeutil"
webhook_module "code.gitea.io/gitea/modules/webhook"
gouuid "github.com/google/uuid"
@@ -40,15 +41,14 @@ type HookResponse struct {
// HookTask represents a hook task.
type HookTask struct {
- ID int64 `xorm:"pk autoincr"`
- HookID int64 `xorm:"index"`
- UUID string `xorm:"unique"`
- api.Payloader `xorm:"-"`
- PayloadContent string `xorm:"LONGTEXT"`
- EventType webhook_module.HookEventType
- IsDelivered bool
- Delivered int64
- DeliveredString string `xorm:"-"`
+ ID int64 `xorm:"pk autoincr"`
+ HookID int64 `xorm:"index"`
+ UUID string `xorm:"unique"`
+ api.Payloader `xorm:"-"`
+ PayloadContent string `xorm:"LONGTEXT"`
+ EventType webhook_module.HookEventType
+ IsDelivered bool
+ Delivered timeutil.TimeStampNano
// History info.
IsSucceed bool
@@ -75,8 +75,6 @@ func (t *HookTask) BeforeUpdate() {
// AfterLoad updates the webhook object upon setting a column
func (t *HookTask) AfterLoad() {
- t.DeliveredString = time.Unix(0, t.Delivered).Format("2006-01-02 15:04:05 MST")
-
if len(t.RequestContent) == 0 {
return
}
@@ -115,12 +113,17 @@ func HookTasks(hookID int64, page int) ([]*HookTask, error) {
// CreateHookTask creates a new hook task,
// it handles conversion from Payload to PayloadContent.
func CreateHookTask(ctx context.Context, t *HookTask) (*HookTask, error) {
- data, err := t.Payloader.JSONPayload()
- if err != nil {
- return nil, err
- }
t.UUID = gouuid.New().String()
- t.PayloadContent = string(data)
+ if t.Payloader != nil {
+ data, err := t.Payloader.JSONPayload()
+ if err != nil {
+ return nil, err
+ }
+ t.PayloadContent = string(data)
+ }
+ if t.Delivered == 0 {
+ t.Delivered = timeutil.TimeStampNanoNow()
+ }
return t, db.Insert(ctx, t)
}
@@ -161,13 +164,11 @@ func ReplayHookTask(ctx context.Context, hookID int64, uuid string) (*HookTask,
}
}
- newTask := &HookTask{
- UUID: gouuid.New().String(),
+ return CreateHookTask(ctx, &HookTask{
HookID: task.HookID,
PayloadContent: task.PayloadContent,
EventType: task.EventType,
- }
- return newTask, db.Insert(ctx, newTask)
+ })
}
// FindUndeliveredHookTaskIDs will find the next 100 undelivered hook tasks with ID greater than the provided lowerID