fix(webhooks): make sure all events with tasks have the full task
Resolves https://kolaente.dev/vikunja/api/issues/1676
This commit is contained in:
parent
d38050f2b8
commit
ae9b382963
@ -470,9 +470,9 @@ func (s *HandleTaskUpdateLastUpdated) Handle(msg *message.Message) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
task, is := event["Task"].(map[string]interface{})
|
||||
task, is := event["task"].(map[string]interface{})
|
||||
if !is {
|
||||
log.Errorf("Event payload does not contain task ID")
|
||||
log.Errorf("Event payload does not contain task")
|
||||
return
|
||||
}
|
||||
|
||||
@ -677,30 +677,28 @@ type WebhookPayload struct {
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
func getProjectIDFromAnyEvent(eventPayload map[string]interface{}) int64 {
|
||||
if task, has := eventPayload["task"]; has {
|
||||
t := task.(map[string]interface{})
|
||||
if projectID, has := t["project_id"]; has {
|
||||
switch v := projectID.(type) {
|
||||
func getIDAsInt64(id interface{}) int64 {
|
||||
switch v := id.(type) {
|
||||
case int64:
|
||||
return v
|
||||
case float64:
|
||||
return int64(v)
|
||||
}
|
||||
return projectID.(int64)
|
||||
return id.(int64)
|
||||
}
|
||||
|
||||
func getProjectIDFromAnyEvent(eventPayload map[string]interface{}) int64 {
|
||||
if task, has := eventPayload["task"]; has {
|
||||
t := task.(map[string]interface{})
|
||||
if projectID, has := t["project_id"]; has {
|
||||
return getIDAsInt64(projectID)
|
||||
}
|
||||
}
|
||||
|
||||
if project, has := eventPayload["project"]; has {
|
||||
t := project.(map[string]interface{})
|
||||
if projectID, has := t["id"]; has {
|
||||
switch v := projectID.(type) {
|
||||
case int64:
|
||||
return v
|
||||
case float64:
|
||||
return int64(v)
|
||||
}
|
||||
return projectID.(int64)
|
||||
return getIDAsInt64(projectID)
|
||||
}
|
||||
}
|
||||
|
||||
@ -739,7 +737,6 @@ func (wl *WebhookListener) Handle(msg *message.Message) (err error) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if webhook == nil {
|
||||
|
@ -184,8 +184,13 @@ func (la *TaskAssginee) Delete(s *xorm.Session, a web.Auth) (err error) {
|
||||
}
|
||||
|
||||
doer, _ := user.GetFromAuth(a)
|
||||
task, err := GetTaskByIDSimple(s, la.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskAssigneeDeletedEvent{
|
||||
Task: &Task{ID: la.TaskID},
|
||||
Task: &task,
|
||||
Assignee: &user.User{ID: la.UserID},
|
||||
Doer: doer,
|
||||
})
|
||||
|
@ -86,8 +86,13 @@ func (ta *TaskAttachment) NewAttachment(s *xorm.Session, f io.ReadCloser, realna
|
||||
return err
|
||||
}
|
||||
|
||||
task, err := GetTaskByIDSimple(s, ta.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskAttachmentCreatedEvent{
|
||||
Task: &Task{ID: ta.TaskID},
|
||||
Task: &task,
|
||||
Attachment: ta,
|
||||
Doer: ta.CreatedBy,
|
||||
})
|
||||
@ -220,8 +225,13 @@ func (ta *TaskAttachment) Delete(s *xorm.Session, a web.Auth) error {
|
||||
}
|
||||
|
||||
doer, _ := user.GetFromAuth(a)
|
||||
task, err := GetTaskByIDSimple(s, ta.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskAttachmentDeletedEvent{
|
||||
Task: &Task{ID: ta.TaskID},
|
||||
Task: &task,
|
||||
Attachment: ta,
|
||||
Doer: doer,
|
||||
})
|
||||
|
@ -114,8 +114,13 @@ func (tc *TaskComment) Delete(s *xorm.Session, _ web.Auth) error {
|
||||
return err
|
||||
}
|
||||
|
||||
task, err := GetTaskByIDSimple(s, tc.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskCommentDeletedEvent{
|
||||
Task: &Task{ID: tc.TaskID},
|
||||
Task: &task,
|
||||
Comment: tc,
|
||||
Doer: tc.Author,
|
||||
})
|
||||
|
@ -201,8 +201,13 @@ func (rel *TaskRelation) Create(s *xorm.Session, a web.Auth) error {
|
||||
}
|
||||
|
||||
doer, _ := user.GetFromAuth(a)
|
||||
task, err := GetTaskByIDSimple(s, rel.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskRelationCreatedEvent{
|
||||
Task: &Task{ID: rel.TaskID},
|
||||
Task: &task,
|
||||
Relation: rel,
|
||||
Doer: doer,
|
||||
})
|
||||
@ -261,8 +266,13 @@ func (rel *TaskRelation) Delete(s *xorm.Session, a web.Auth) error {
|
||||
}
|
||||
|
||||
doer, _ := user.GetFromAuth(a)
|
||||
task, err := GetTaskByIDSimple(s, rel.TaskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return events.Dispatch(&TaskRelationDeletedEvent{
|
||||
Task: &Task{ID: rel.TaskID},
|
||||
Task: &task,
|
||||
Relation: rel,
|
||||
Doer: doer,
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user