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