fix(events): do not crash filter event handler when triggered by a link share user

Resolves https://vikunja.sentry.io/issues/6030883119/events/4013802889b64b6b9d868e7c83ba4eb5/
This commit is contained in:
kolaente 2024-10-30 14:49:33 +01:00
parent 8522eb9b0d
commit 7f5f5a4b8d
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
1 changed files with 8 additions and 4 deletions

View File

@ -672,11 +672,15 @@ func (l *UpdateTaskInSavedFilterViews) Handle(msg *message.Message) (err error)
return err
}
var fallbackTimezone string
u, err := user.GetUserByID(s, event.Doer.GetID())
if err != nil {
return err
if err == nil {
fallbackTimezone = u.Timezone
// When a link share triggered this event, the user id will be 0, and thus this fails.
// Only passing the value along when the user was retrieved successfully ensures the whole handler
// does not fail because of that.
// When the fallback is empty, it will be handled later anyhow.
}
doerTimezone := u.Timezone
taskBuckets := []*TaskBucket{}
taskPositions := []*TaskPosition{}
@ -690,7 +694,7 @@ func (l *UpdateTaskInSavedFilterViews) Handle(msg *message.Message) (err error)
continue
}
taskBucket, taskPosition, err := addTaskToFilter(s, filter, view, doerTimezone, event.Task)
taskBucket, taskPosition, err := addTaskToFilter(s, filter, view, fallbackTimezone, event.Task)
if err != nil {
if IsErrInvalidFilterExpression(err) ||
IsErrInvalidTaskFilterValue(err) ||