Dashboard: Mix initials and custom gravatars in recent viewers list (#47212)
* Use Wiring to initialize Avatar Cache Server Create AvatarCacheServer Provider function and pass it in as an argument to HTTPServer. Also convert CacheServer to a singleton so that we keep all cached Avatar info in one place for easier access * Refactor avatar cache server and add 'isCustom' check Avatar cache server needs to perform two similar fetches back-to-back; break up functions to allow for easy reuse. Then add handling to see if a user has a custom avatar. * Add additional accessors so that /recents api can easily use the cache * Minor mods to avatar server to facilitiate unit testing * add unit tests for avatar fetching * add error handling in case we somehow fetch gravatars while they are disabled * linting: read error return value in unit test * Use http package status codes Co-authored-by: Ezequiel Victorero <evictorero@gmail.com> * Use http package status codes Co-authored-by: Ezequiel Victorero <evictorero@gmail.com> * Use http package status codes Co-authored-by: Ezequiel Victorero <evictorero@gmail.com> * Incorporate suggestions from PR -avoid mutating arguments -change error handler function to private and make name more descriptive Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
This commit is contained in:
co-authored by
Ezequiel Victorero
parent
a9bc8b2016
commit
f9d86557cf
@@ -13,6 +13,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/grafana/grafana/pkg/api/avatar"
|
||||
"github.com/grafana/grafana/pkg/api/routing"
|
||||
httpstatic "github.com/grafana/grafana/pkg/api/static"
|
||||
"github.com/grafana/grafana/pkg/bus"
|
||||
@@ -147,6 +148,7 @@ type HTTPServer struct {
|
||||
AlertNotificationService *alerting.AlertNotificationService
|
||||
DashboardsnapshotsService *dashboardsnapshots.Service
|
||||
PluginSettings *pluginSettings.Service
|
||||
AvatarCacheServer *avatar.AvatarCacheServer
|
||||
}
|
||||
|
||||
type ServerOptions struct {
|
||||
@@ -178,6 +180,7 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi
|
||||
dashboardProvisioningService dashboards.DashboardProvisioningService, folderService dashboards.FolderService,
|
||||
datasourcePermissionsService permissions.DatasourcePermissionsService, alertNotificationService *alerting.AlertNotificationService,
|
||||
dashboardsnapshotsService *dashboardsnapshots.Service, commentsService *comments.Service, pluginSettings *pluginSettings.Service,
|
||||
avatarCacheServer *avatar.AvatarCacheServer,
|
||||
) (*HTTPServer, error) {
|
||||
web.Env = cfg.Env
|
||||
m := web.New()
|
||||
@@ -250,6 +253,7 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi
|
||||
DashboardsnapshotsService: dashboardsnapshotsService,
|
||||
PluginSettings: pluginSettings,
|
||||
permissionServices: permissionsServices,
|
||||
AvatarCacheServer: avatarCacheServer,
|
||||
}
|
||||
if hs.Listener != nil {
|
||||
hs.log.Debug("Using provided listener")
|
||||
|
||||
Reference in New Issue
Block a user