From 534a7bfaafd1f2c8db584923617333ad15fdd1a0 Mon Sep 17 00:00:00 2001 From: Jacalz Date: Wed, 17 Sep 2025 22:28:16 +0200 Subject: [PATCH] Run modernise on the project This will be available in "go fix" within Go 1.26 but in the meantime: go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... --- backend/imagemanager.go | 4 ++-- backend/ipc/server.go | 2 +- .../mediaprovider/jellyfin/jellyfinmediaprovider.go | 2 +- .../mediaprovider/subsonic/subsonicmediaprovider.go | 2 +- backend/playbackmanager.go | 2 +- backend/player/dlna/dlnaplayer.go | 12 ++++++------ backend/waveformimage.go | 6 +++--- ui/browsing/albumspage.go | 5 +---- ui/browsing/artistspage.go | 5 +---- ui/dialogs/settingsdialog.go | 5 +---- ui/layouts/columnslayout.go | 4 ++-- ui/theme/theme.go | 5 +---- ui/widgets/albumfilterbutton.go | 4 ++-- ui/widgets/starrating.go | 4 ++-- ui/widgets/tracklistloader.go | 2 +- 15 files changed, 26 insertions(+), 38 deletions(-) diff --git a/backend/imagemanager.go b/backend/imagemanager.go index 5f99b5c..af05663 100644 --- a/backend/imagemanager.go +++ b/backend/imagemanager.go @@ -46,7 +46,7 @@ type ImageManager struct { maxOnDiskCacheSizeBytes int64 filesWrittenSinceLastPrune bool - serverFetchSema chan interface{} + serverFetchSema chan any } // NewImageManager returns a new ImageManager. @@ -64,7 +64,7 @@ func NewImageManager(ctx context.Context, s *ServerManager, baseCacheDir string) DefaultTTL: 1 * time.Minute, }, maxOnDiskCacheSizeBytes: defaultDiskCacheSizeBytes, - serverFetchSema: make(chan interface{}, maxConcurrentServerFetches), + serverFetchSema: make(chan any, maxConcurrentServerFetches), } s.OnLogout(func() { i.thumbnailCache.Clear() diff --git a/backend/ipc/server.go b/backend/ipc/server.go index d5dc662..77a663b 100644 --- a/backend/ipc/server.go +++ b/backend/ipc/server.go @@ -144,7 +144,7 @@ func (s *serverImpl) createHandler() http.Handler { search = strings.ToLower(search) filtered := make([]mediaprovider.Playlist, 0) - for i := 0; i < len(all); i++ { + for i := range all { playlist := all[i] name := strings.ReplaceAll(playlist.Name, " ", "") name = strings.ToLower(name) diff --git a/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go b/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go index 4e47a11..7b5fe6f 100644 --- a/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go +++ b/backend/mediaprovider/jellyfin/jellyfinmediaprovider.go @@ -344,7 +344,7 @@ func (j *jellyfinMediaProvider) SetFavorite(params mediaprovider.RatingFavoriteP } numBatches := int(math.Ceil(float64(len(allIDs)) / float64(batchSize))) - for i := 0; i < numBatches; i++ { + for i := range numBatches { var wg sync.WaitGroup batchSetFavorite(i*batchSize, &wg) wg.Wait() diff --git a/backend/mediaprovider/subsonic/subsonicmediaprovider.go b/backend/mediaprovider/subsonic/subsonicmediaprovider.go index 478ac5a..ea04a31 100644 --- a/backend/mediaprovider/subsonic/subsonicmediaprovider.go +++ b/backend/mediaprovider/subsonic/subsonicmediaprovider.go @@ -342,7 +342,7 @@ func (s *subsonicMediaProvider) SetRating(params mediaprovider.RatingFavoritePar } numBatches := int(math.Ceil(float64(len(params.TrackIDs)) / float64(batchSize))) - for i := 0; i < numBatches; i++ { + for i := range numBatches { var wg sync.WaitGroup batchSetRating(i*batchSize, &wg) wg.Wait() diff --git a/backend/playbackmanager.go b/backend/playbackmanager.go index 09cb9cc..38e54f3 100644 --- a/backend/playbackmanager.go +++ b/backend/playbackmanager.go @@ -498,7 +498,7 @@ func (p *PlaybackManager) PlayRandomAlbums(genreName string) error { } iter := mp.IterateAlbums(mediaprovider.AlbumSortRandom, mediaprovider.NewAlbumFilter(options)) insertMode := Replace - for i := 0; i < 20; i++ { + for i := range 20 { al := iter.Next() if al == nil { break diff --git a/backend/player/dlna/dlnaplayer.go b/backend/player/dlna/dlnaplayer.go index 399f400..9f0ecb0 100644 --- a/backend/player/dlna/dlnaplayer.go +++ b/backend/player/dlna/dlnaplayer.go @@ -618,7 +618,7 @@ func (d *DLNAPlayer) lookupProxyURL(key string) (string, bool) { d.proxyURLLock.Lock() defer d.proxyURLLock.Unlock() - for i := 0; i < len(d.proxyURLs); i++ { + for i := range len(d.proxyURLs) { if d.proxyURLs[i].key == key { url := d.proxyURLs[i].url // Move accessed entry to the most recent position @@ -632,7 +632,7 @@ func (d *DLNAPlayer) lookupProxyURL(key string) (string, bool) { func (d *DLNAPlayer) _updateProxyURL(key, url string) { // Check if the key already exists, and if so, move it to the most recently used position - for i := 0; i < len(d.proxyURLs); i++ { + for i := range len(d.proxyURLs) { if d.proxyURLs[i].key == key { if i < len(d.proxyURLs)-1 { // Shift elements to the left from found position to the end @@ -652,19 +652,19 @@ func (d *DLNAPlayer) _updateProxyURL(key, url string) { type retryLogger struct{} -func (retryLogger) Error(msg string, keysAndValues ...interface{}) { +func (retryLogger) Error(msg string, keysAndValues ...any) { log.Println(msg, keysAndValues) } -func (retryLogger) Info(msg string, keysAndValues ...interface{}) { +func (retryLogger) Info(msg string, keysAndValues ...any) { log.Println(msg, keysAndValues) } -func (retryLogger) Warn(msg string, keysAndValues ...interface{}) { +func (retryLogger) Warn(msg string, keysAndValues ...any) { log.Println(msg, keysAndValues) } -func (retryLogger) Debug(msg string, keysAndValues ...interface{}) { +func (retryLogger) Debug(msg string, keysAndValues ...any) { // log only retries, not every request if strings.Contains(msg, "retrying request") { log.Println(msg, keysAndValues) diff --git a/backend/waveformimage.go b/backend/waveformimage.go index e065e0f..117155b 100644 --- a/backend/waveformimage.go +++ b/backend/waveformimage.go @@ -86,7 +86,7 @@ func (w *WaveformImageJob) Get() *WaveformImage { result := NewWaveformImage() // Copy each scanline from w.img to result - for y := 0; y < height; y++ { + for y := range height { srcOffset := w.img.PixOffset(0, y) dstOffset := result.PixOffset(0, y) copy(result.Pix[dstOffset:dstOffset+w.progress*4], w.img.Pix[srcOffset:srcOffset+w.progress*4]) @@ -226,7 +226,7 @@ func generateWaveformImage(ctx context.Context, data *waveformData, job *Wavefor opaqueColor := color.NRGBA{R: 255, G: 255, B: 255, A: 255} translucentColor := color.NRGBA{R: 255, G: 255, B: 255, A: 128} - for x := 0; x < 1024; x++ { + for x := range 1024 { for data.progress <= x { if data.done { return @@ -341,7 +341,7 @@ func analyzeWavFile(ctx context.Context, transcodeFile string, data *waveformDat } // Process samples - for i := 0; i < n; i++ { + for i := range n { sample := float64(buf.Data[i]) / float64(1<<15) // Normalize to [-1, 1] chunkSamples = append(chunkSamples, sample) diff --git a/ui/browsing/albumspage.go b/ui/browsing/albumspage.go index 4c8dc6b..48e9df4 100644 --- a/ui/browsing/albumspage.go +++ b/ui/browsing/albumspage.go @@ -62,10 +62,7 @@ func (a *albumsPageAdapter) Route() controller.Route { return controller.AlbumsR func (a *albumsPageAdapter) SortOrders() ([]string, int) { orders := a.mp.AlbumSortOrders() - sortOrder := slices.Index(orders, a.cfg.SortOrder) - if sortOrder < 0 { - sortOrder = 0 - } + sortOrder := max(slices.Index(orders, a.cfg.SortOrder), 0) return util.LocalizeSlice(orders), sortOrder } diff --git a/ui/browsing/artistspage.go b/ui/browsing/artistspage.go index e4b3e51..fca01eb 100644 --- a/ui/browsing/artistspage.go +++ b/ui/browsing/artistspage.go @@ -47,10 +47,7 @@ func (a *artistsPageAdapter) Route() controller.Route { return controller.Artist func (a *artistsPageAdapter) SortOrders() ([]string, int) { orders := a.mp.ArtistSortOrders() - sortOrder := slices.Index(orders, a.cfg.SortOrder) - if sortOrder < 0 { - sortOrder = 0 - } + sortOrder := max(slices.Index(orders, a.cfg.SortOrder), 0) return util.LocalizeSlice(orders), sortOrder } diff --git a/ui/dialogs/settingsdialog.go b/ui/dialogs/settingsdialog.go index 9bb0b29..239385c 100644 --- a/ui/dialogs/settingsdialog.go +++ b/ui/dialogs/settingsdialog.go @@ -106,10 +106,7 @@ func (s *SettingsDialog) createGeneralTab(canSaveQueueToServer bool) *container. startupPage = widget.NewSelect(pages, func(_ string) { s.config.Application.StartupPage = backend.SupportedStartupPages[startupPage.SelectedIndex()] }) - initialIdx := slices.Index(backend.SupportedStartupPages, s.config.Application.StartupPage) - if initialIdx < 0 { - initialIdx = 0 - } + initialIdx := max(slices.Index(backend.SupportedStartupPages, s.config.Application.StartupPage), 0) startupPage.SetSelectedIndex(initialIdx) if startupPage.Selected == "" { startupPage.SetSelectedIndex(0) diff --git a/ui/layouts/columnslayout.go b/ui/layouts/columnslayout.go index 9ae141f..90b1e7f 100644 --- a/ui/layouts/columnslayout.go +++ b/ui/layouts/columnslayout.go @@ -23,7 +23,7 @@ func NewColumnsLayout(widths []float32) *ColumnsLayout { func (c *ColumnsLayout) MinSize(objects []fyne.CanvasObject) fyne.Size { var width float32 var height float32 - for i := 0; i < len(objects); i++ { + for i := range objects { if !objects[i].Visible() { continue } @@ -56,7 +56,7 @@ func (c *ColumnsLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) { expandObjW := extraW / float32(expandObjCount) var x float32 - for i := 0; i < len(objects); i++ { + for i := range objects { if !objects[i].Visible() { continue } diff --git a/ui/theme/theme.go b/ui/theme/theme.go index feb3435..43e6095 100644 --- a/ui/theme/theme.go +++ b/ui/theme/theme.go @@ -341,10 +341,7 @@ func darkenColor(c color.Color, fraction float64) color.Color { } func brightenComponent(component uint32, fraction float64) uint32 { - brightened := component + uint32(float64(component)*fraction) - if brightened > 0xffff { - brightened = 0xffff - } + brightened := min(component+uint32(float64(component)*fraction), 0xffff) return brightened } diff --git a/ui/widgets/albumfilterbutton.go b/ui/widgets/albumfilterbutton.go index 43cb30c..7985f95 100644 --- a/ui/widgets/albumfilterbutton.go +++ b/ui/widgets/albumfilterbutton.go @@ -236,7 +236,7 @@ type GenreFilterSubsection struct { genreList []string onChanged func([]string) - selectedGenres map[string]interface{} + selectedGenres map[string]any selectedGenresMutex sync.RWMutex filterText *widget.Entry @@ -253,7 +253,7 @@ type GenreFilterSubsection struct { func NewGenreFilterSubsection(onChanged func([]string), initialSelectedGenres []string) *GenreFilterSubsection { g := &GenreFilterSubsection{ onChanged: onChanged, - selectedGenres: make(map[string]interface{}), + selectedGenres: make(map[string]any), } g.ExtendBaseWidget(g) diff --git a/ui/widgets/starrating.go b/ui/widgets/starrating.go index 8409538..c7a980c 100644 --- a/ui/widgets/starrating.go +++ b/ui/widgets/starrating.go @@ -45,7 +45,7 @@ func NewStarRating() *StarRating { func (s *StarRating) createContainer() { s.container = container.New(layout.NewCustomPaddedHBoxLayout(0)) var im *canvas.Image - for i := 0; i < 5; i++ { + for i := range 5 { if s.IsDisabled { im = canvas.NewImageFromResource(themedDisabledStarOutline) } else if s.Rating > i { @@ -126,7 +126,7 @@ func (s *StarRating) Refresh() { if !s.holdRating && s.mouseHoverRating > 0 { rating = s.mouseHoverRating } - for i := 0; i < 5; i++ { + for i := range 5 { im := s.container.Objects[i].(*canvas.Image) im.SetMinSize(fyne.NewSize(s.StarSize, s.StarSize)) if s.IsDisabled { diff --git a/ui/widgets/tracklistloader.go b/ui/widgets/tracklistloader.go index cc1a235..88619ef 100644 --- a/ui/widgets/tracklistloader.go +++ b/ui/widgets/tracklistloader.go @@ -58,7 +58,7 @@ func (t *TracklistLoader) loadMoreTracks(num int) { t.trackBuffer = make([]*mediaprovider.Track, 0, num) } t.trackBuffer = t.trackBuffer[:0] - for i := 0; i < num; i++ { + for range num { tr := t.iter.Next() if tr == nil { t.done = true