in src/ulsp/controller/user-guidance/user_guidance.go [128:162]
func (c *controller) displayApplicableMessages(ctx context.Context) error {
var wg sync.WaitGroup
errChan := make(chan error, len(c.guidance.Messages))
for _, msg := range c.guidance.Messages {
wg.Add(1)
go func(msg Message) {
defer wg.Done()
switch msg.Kind {
case userGuidanceMessageKindOutput:
if err := c.OutputMessage(ctx, msg); err != nil {
errChan <- fmt.Errorf("output message '%s': %w", msg.Key, err)
return
}
case userGuidanceMessageKindNotification:
if _, err := c.NotifyMessage(ctx, msg); err != nil {
errChan <- fmt.Errorf("notify message '%s': %w", msg.Key, err)
return
}
}
}(msg)
}
wg.Wait()
close(errChan)
for err := range errChan {
if err != nil {
return err
}
}
return nil
}