From 609d172259a210d4a106aae5df56d6110bb8e08a Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 17 Jul 2020 20:25:13 -0400 Subject: [PATCH] Use first admin user for all scan operations --- scanner/playlist_sync.go | 16 +++------------- scanner/tag_scanner_2.go | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/scanner/playlist_sync.go b/scanner/playlist_sync.go index ae9de2bf1..8601dc25c 100644 --- a/scanner/playlist_sync.go +++ b/scanner/playlist_sync.go @@ -93,9 +93,7 @@ func (s *playlistSync) parsePlaylist(ctx context.Context, playlistFile string, b } func (s *playlistSync) updatePlaylistIfNewer(ctx context.Context, newPls *model.Playlist) error { - owner := s.getPlaylistsOwner(ctx) - ctx = request.WithUsername(ctx, owner.UserName) - ctx = request.WithUser(ctx, *owner) + owner, _ := request.UsernameFrom(ctx) pls, err := s.ds.Playlist(ctx).FindByPath(newPls.Path) if err != nil && err != model.ErrNotFound { @@ -113,16 +111,8 @@ func (s *playlistSync) updatePlaylistIfNewer(ctx context.Context, newPls *model. newPls.Comment = pls.Comment newPls.Owner = pls.Owner } else { - log.Info(ctx, "Adding synced playlist", "playlist", newPls.Name, "path", newPls.Path, "owner", owner.UserName) - newPls.Owner = owner.UserName + log.Info(ctx, "Adding synced playlist", "playlist", newPls.Name, "path", newPls.Path, "owner", owner) + newPls.Owner = owner } return s.ds.Playlist(ctx).Put(newPls) } - -func (s *playlistSync) getPlaylistsOwner(ctx context.Context) *model.User { - u, err := s.ds.User(ctx).FindFirstAdmin() - if err != nil { - log.Error(ctx, "Error retrieving playlist owner", err) - } - return u -} diff --git a/scanner/tag_scanner_2.go b/scanner/tag_scanner_2.go index 9265bae12..d72d88a6f 100644 --- a/scanner/tag_scanner_2.go +++ b/scanner/tag_scanner_2.go @@ -9,6 +9,7 @@ import ( "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" + "github.com/deluan/navidrome/model/request" "github.com/deluan/navidrome/utils" ) @@ -44,6 +45,8 @@ func NewTagScanner2(rootFolder string, ds model.DataStore) *TagScanner2 { // refresh the collected albums and artists with the metadata from the mediafiles // Delete all empty albums, delete all empty Artists func (s *TagScanner2) Scan(ctx context.Context, lastModifiedSince time.Time) error { + ctx = s.setAdminUser(ctx) + start := time.Now() allDirs, err := s.getDirTree(ctx) if err != nil { @@ -321,3 +324,14 @@ func (s *TagScanner2) loadTracks(filePaths []string) (model.MediaFiles, error) { } return mfs, nil } + +func (s *TagScanner2) setAdminUser(ctx context.Context) context.Context { + u, err := s.ds.User(ctx).FindFirstAdmin() + if err != nil { + log.Error(ctx, "Error retrieving playlist owner", err) + u = &model.User{} + } + + ctx = request.WithUsername(ctx, u.UserName) + return request.WithUser(ctx, *u) +}