diff --git a/server/services/notify/notifysubscriptions/diff2slackattachments.go b/server/services/notify/notifysubscriptions/diff2slackattachments.go index ec4ee56e9..83fec99e6 100644 --- a/server/services/notify/notifysubscriptions/diff2slackattachments.go +++ b/server/services/notify/notifysubscriptions/diff2slackattachments.go @@ -20,9 +20,9 @@ import ( const ( // card change notifications. - defAddCardNotify = "{{.Authors | printAuthors \"unknown_user\" }} has added the card {{.NewBlock | makeLink}}\n" - defModifyCardNotify = "###### {{.Authors | printAuthors \"unknown_user\" }} has modified the card {{.Card | makeLink}}\n" - defDeleteCardNotify = "{{.Authors | printAuthors \"unknown_user\" }} has deleted the card {{.Card | makeLink}}\n" + defAddCardNotify = "{{.Authors | printAuthors \"unknown_user\" }} has added the card {{. | makeLink}}\n" + defModifyCardNotify = "###### {{.Authors | printAuthors \"unknown_user\" }} has modified the card {{. | makeLink}}\n" + defDeleteCardNotify = "{{.Authors | printAuthors \"unknown_user\" }} has deleted the card {{. | makeLink}}\n" ) var ( @@ -34,7 +34,7 @@ var ( // DiffConvOpts provides options when converting diffs to slack attachments. type DiffConvOpts struct { Language string - MakeCardLink func(block *model.Block) string + MakeCardLink func(block *model.Block, board *model.Block, card *model.Block) string Logger *mlog.Logger } @@ -49,11 +49,15 @@ func getTemplate(name string, opts DiffConvOpts, def string) (*template.Template t = template.New(key) if opts.MakeCardLink == nil { - opts.MakeCardLink = func(block *model.Block) string { return fmt.Sprintf("`%s`", block.Title) } + opts.MakeCardLink = func(block *model.Block, _ *model.Block, _ *model.Block) string { + return fmt.Sprintf("`%s`", block.Title) + } } myFuncs := template.FuncMap{ "getBoardDescription": getBoardDescription, - "makeLink": opts.MakeCardLink, + "makeLink": func(diff *Diff) string { + return opts.MakeCardLink(diff.NewBlock, diff.Board, diff.Card) + }, "stripNewlines": func(s string) string { return strings.TrimSpace(strings.ReplaceAll(s, "\n", "ΒΆ ")) }, @@ -151,6 +155,13 @@ func cardDiff2SlackAttachment(cardDiff *Diff, opts DiffConvOpts) (*mm_model.Slac // at this point new and old block are non-nil + opts.Logger.Debug("cardDiff2SlackAttachment", + mlog.String("board_id", cardDiff.Board.ID), + mlog.String("card_id", cardDiff.Card.ID), + mlog.String("new_block_id", cardDiff.NewBlock.ID), + mlog.String("old_block_id", cardDiff.OldBlock.ID), + ) + buf.Reset() if err := execTemplate(buf, "ModifyCardNotify", opts, defModifyCardNotify, cardDiff); err != nil { return nil, fmt.Errorf("cannot write notification for card %s: %w", cardDiff.NewBlock.ID, err) diff --git a/server/services/notify/notifysubscriptions/notifier.go b/server/services/notify/notifysubscriptions/notifier.go index 1ba7b053c..20621f7fa 100644 --- a/server/services/notify/notifysubscriptions/notifier.go +++ b/server/services/notify/notifysubscriptions/notifier.go @@ -154,11 +154,6 @@ func (n *notifier) notifySubscribers(hint *model.NotificationHint) error { return nil } - n.logger.Debug("notifySubscribers - subscribers", - mlog.Any("hint", hint), - mlog.Int("sub_count", len(subs)), - ) - // subs slice is sorted by `NotifiedAt`, therefore subs[0] contains the oldest NotifiedAt needed oldestNotifiedAt := subs[0].NotifiedAt @@ -168,6 +163,13 @@ func (n *notifier) notifySubscribers(hint *model.NotificationHint) error { return fmt.Errorf("could not get board & card for block %s: %w", hint.BlockID, err) } + n.logger.Debug("notifySubscribers - subscribers", + mlog.Any("hint", hint), + mlog.String("board_id", board.ID), + mlog.String("card_id", card.ID), + mlog.Int("sub_count", len(subs)), + ) + dg := &diffGenerator{ container: c, board: board, @@ -198,7 +200,7 @@ func (n *notifier) notifySubscribers(hint *model.NotificationHint) error { opts := DiffConvOpts{ Language: "en", // TODO: use correct language with i18n available on server. - MakeCardLink: func(block *model.Block) string { + MakeCardLink: func(block *model.Block, board *model.Block, card *model.Block) string { return fmt.Sprintf("[%s](%s)", block.Title, utils.MakeCardLink(n.serverRoot, board.WorkspaceID, board.ID, card.ID)) }, Logger: n.logger,