From 7f5f5a4b8d6a337fd884f774f0363a32dd19c0f8 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 30 Oct 2024 14:49:33 +0100 Subject: [PATCH] fix(events): do not crash filter event handler when triggered by a link share user Resolves https://vikunja.sentry.io/issues/6030883119/events/4013802889b64b6b9d868e7c83ba4eb5/ --- pkg/models/listeners.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/models/listeners.go b/pkg/models/listeners.go index 4da2536af..25d6dcf02 100644 --- a/pkg/models/listeners.go +++ b/pkg/models/listeners.go @@ -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) ||