4
4
"context"
5
5
"encoding/json"
6
6
"sync"
7
+ "text/template"
7
8
8
9
"github.com/google/uuid"
9
10
"golang.org/x/sync/errgroup"
@@ -36,13 +37,14 @@ type notifier struct {
36
37
37
38
handlers map [database.NotificationMethod ]Handler
38
39
metrics * Metrics
40
+ helpers template.FuncMap
39
41
40
42
// clock is for testing
41
43
clock quartz.Clock
42
44
}
43
45
44
46
func newNotifier (cfg codersdk.NotificationsConfig , id uuid.UUID , log slog.Logger , db Store ,
45
- hr map [database.NotificationMethod ]Handler , metrics * Metrics , clock quartz.Clock ,
47
+ hr map [database.NotificationMethod ]Handler , helpers template. FuncMap , metrics * Metrics , clock quartz.Clock ,
46
48
) * notifier {
47
49
tick := clock .NewTicker (cfg .FetchInterval .Value (), "notifier" , "fetchInterval" )
48
50
return & notifier {
@@ -54,6 +56,7 @@ func newNotifier(cfg codersdk.NotificationsConfig, id uuid.UUID, log slog.Logger
54
56
tick : tick ,
55
57
store : db ,
56
58
handlers : hr ,
59
+ helpers : helpers ,
57
60
metrics : metrics ,
58
61
clock : clock ,
59
62
}
@@ -221,10 +224,10 @@ func (n *notifier) prepare(ctx context.Context, msg database.AcquireNotification
221
224
}
222
225
223
226
var title , body string
224
- if title , err = render .GoTemplate (msg .TitleTemplate , payload , nil ); err != nil { // FIXME helpers
227
+ if title , err = render .GoTemplate (msg .TitleTemplate , payload , n . helpers ); err != nil {
225
228
return nil , xerrors .Errorf ("render title: %w" , err )
226
229
}
227
- if body , err = render .GoTemplate (msg .BodyTemplate , payload , nil ); err != nil { // FIXME helpers
230
+ if body , err = render .GoTemplate (msg .BodyTemplate , payload , n . helpers ); err != nil {
228
231
return nil , xerrors .Errorf ("render body: %w" , err )
229
232
}
230
233
0 commit comments