misc: Upgrade Go to v1.21

Upgrade to 1.21 as 1.20 is now unmaintained.

Most changes are related to the new `slices` package from standard
library, which can replace some existing custom functions.
This commit is contained in:
Michael Manganiello
2024-03-05 09:49:10 -03:00
parent ea1b2f3284
commit 801967a530
19 changed files with 47 additions and 104 deletions
+3 -2
View File
@@ -1,11 +1,12 @@
package browsing
import (
"slices"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
"github.com/dweymouth/supersonic/backend"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/sharedutil"
"github.com/dweymouth/supersonic/ui/controller"
myTheme "github.com/dweymouth/supersonic/ui/theme"
"github.com/dweymouth/supersonic/ui/util"
@@ -37,7 +38,7 @@ func (a *albumsPageAdapter) Route() controller.Route { return controller.AlbumsR
func (a *albumsPageAdapter) SortOrders() ([]string, string) {
orders := a.mp.AlbumSortOrders()
sortOrder := a.cfg.SortOrder
if !sharedutil.SliceContains(orders, sortOrder) {
if !slices.Contains(orders, sortOrder) {
sortOrder = string(orders[0])
}
return orders, sortOrder
+4 -3
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"image"
"log"
"slices"
"strings"
"github.com/dweymouth/supersonic/backend"
@@ -106,13 +107,13 @@ func NewNowPlayingPage(
}
a.queueList.OnSetRating = func(trackIDs []string, rating int) {
contr.SetTrackRatings(trackIDs, rating)
if sharedutil.SliceContains(trackIDs, a.nowPlayingID) {
if slices.Contains(trackIDs, a.nowPlayingID) {
a.card.SetDisplayedRating(rating)
}
}
a.queueList.OnSetFavorite = func(trackIDs []string, fav bool) {
contr.SetTrackFavorites(trackIDs, fav)
if sharedutil.SliceContains(trackIDs, a.nowPlayingID) {
if slices.Contains(trackIDs, a.nowPlayingID) {
a.card.SetDisplayedFavorite(fav)
}
}
@@ -232,7 +233,7 @@ func (a *NowPlayingPage) Tapped(*fyne.PointEvent) {
func (a *NowPlayingPage) doSetNewTrackOrder(trackIDs []string, op sharedutil.TrackReorderOp) {
idxs := make([]int, 0, len(trackIDs))
for i, tr := range a.queue {
if sharedutil.SliceContains(trackIDs, tr.ID) {
if slices.Contains(trackIDs, tr.ID) {
idxs = append(idxs, i)
}
}
+2 -1
View File
@@ -3,6 +3,7 @@ package browsing
import (
"fmt"
"log"
"slices"
"github.com/dweymouth/supersonic/backend"
"github.com/dweymouth/supersonic/backend/mediaprovider"
@@ -183,7 +184,7 @@ func (a *PlaylistPage) doSetNewTrackOrder(op sharedutil.TrackReorderOp) {
ids := a.tracklist.SelectedTrackIDs()
idxs := make([]int, 0, len(ids))
for i, tr := range a.tracks {
if sharedutil.SliceContains(ids, tr.ID) {
if slices.Contains(ids, tr.ID) {
idxs = append(idxs, i)
}
}
+5 -5
View File
@@ -4,15 +4,15 @@ import (
"bytes"
"errors"
"image/color"
"io/ioutil"
"log"
"os"
"path"
"path/filepath"
"slices"
"strings"
"github.com/dweymouth/supersonic/backend"
"github.com/dweymouth/supersonic/res"
"github.com/dweymouth/supersonic/sharedutil"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
@@ -200,7 +200,7 @@ func (m *MyTheme) Font(style fyne.TextStyle) fyne.Resource {
}
case fyne.TextStyle{Bold: true}:
if m.BoldFont != "" && boldFont == nil {
if content, err := ioutil.ReadFile(m.BoldFont); err != nil {
if content, err := os.ReadFile(m.BoldFont); err != nil {
m.BoldFont = ""
} else {
normalFont = fyne.NewStaticResource("boldFont", content)
@@ -222,7 +222,7 @@ func (m *MyTheme) Size(name fyne.ThemeSizeName) float32 {
func (m *MyTheme) getVariant() fyne.ThemeVariant {
v := DefaultAppearance // default if config has invalid or missing setting
if sharedutil.SliceContains(
if slices.Contains(
[]string{string(AppearanceLight), string(AppearanceDark), string(AppearanceAuto)},
m.config.Appearance) {
v = AppearanceMode(m.config.Appearance)
@@ -242,7 +242,7 @@ func readTTFFile(filepath string) ([]byte, error) {
log.Printf("error loading custom font %q: %s", filepath, err.Error())
return nil, err
}
content, err := ioutil.ReadFile(filepath)
content, err := os.ReadFile(filepath)
if err != nil {
log.Printf("error loading custom font %q: %s", filepath, err.Error())
}
+3 -3
View File
@@ -7,11 +7,11 @@ import (
"image/color"
"io"
"os"
"slices"
"strings"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
"github.com/dweymouth/supersonic/sharedutil"
"github.com/pelletier/go-toml/v2"
)
@@ -109,7 +109,7 @@ func DecodeThemeFile(reader io.Reader) (*ThemeFile, error) {
return nil, err
}
if theme.SupersonicTheme.Name == "" || !sharedutil.SliceContains(validThemeVersions, theme.SupersonicTheme.Version) {
if theme.SupersonicTheme.Name == "" || !slices.Contains(validThemeVersions, theme.SupersonicTheme.Version) {
return nil, errors.New("invalid theme file name or version")
}
if !(theme.SupersonicTheme.SupportsDark || theme.SupersonicTheme.SupportsLight) {
@@ -129,7 +129,7 @@ func (t *ThemeFile) SupportsVariant(v fyne.ThemeVariant) bool {
// Parses a CSS-style #RRGGBB or #RRGGBBAA string
func ColorStringToColor(colorStr string) (color.Color, error) {
if !strings.HasPrefix(colorStr, "#") || !sharedutil.SliceContains([]int{7, 9}, len(colorStr)) {
if !strings.HasPrefix(colorStr, "#") || !slices.Contains([]int{7, 9}, len(colorStr)) {
return color.Black, errors.New("invalid color string")
}
colorBytes := make([]byte, 4)
+5 -17
View File
@@ -1,6 +1,8 @@
package util
import (
"slices"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/sharedutil"
)
@@ -69,15 +71,15 @@ func SelectTrackRange(tracks []*TrackListModel, idx int) {
tracks[idx].Selected = true
return
}
from := minInt(idx, lastSelected)
to := maxInt(idx, lastSelected)
from := min(idx, lastSelected)
to := max(idx, lastSelected)
for i := from; i <= to; i++ {
tracks[i].Selected = true
}
}
func FindTrackByID(tracks []*TrackListModel, id string) (*mediaprovider.Track, int) {
idx := sharedutil.Find(tracks, func(tr *TrackListModel) bool {
idx := slices.IndexFunc(tracks, func(tr *TrackListModel) bool {
return tr.Track.ID == id
})
if idx >= 0 {
@@ -85,17 +87,3 @@ func FindTrackByID(tracks []*TrackListModel, id string) (*mediaprovider.Track, i
}
return nil, -1
}
func minInt(a, b int) int {
if a < b {
return a
}
return b
}
func maxInt(a, b int) int {
if a > b {
return a
}
return b
}
+2 -2
View File
@@ -2,7 +2,7 @@ package widgets
import (
"fmt"
"sort"
"slices"
"strconv"
"strings"
"sync"
@@ -49,7 +49,7 @@ func NewAlbumFilterButton(filter *mediaprovider.AlbumFilter, fetchGenresFunc fun
genreNames := sharedutil.MapSlice(genres, func(g *mediaprovider.Genre) string {
return g.Name
})
sort.Strings(genreNames)
slices.Sort(genreNames)
a.genreListChan <- genreNames
}
}()
+2 -2
View File
@@ -3,9 +3,9 @@ package widgets
import (
"image"
"image/color"
"slices"
"github.com/dweymouth/supersonic/res"
"github.com/dweymouth/supersonic/sharedutil"
"github.com/dweymouth/supersonic/ui/layouts"
"github.com/dweymouth/supersonic/ui/util"
@@ -205,7 +205,7 @@ func (g *GridViewItem) createContainer() {
}
func (g *GridViewItem) NeedsUpdate(model GridViewItemModel) bool {
return g.itemID != model.ID || !sharedutil.SliceEqual(g.secondaryIDs, model.SecondaryIDs)
return g.itemID != model.ID || !slices.Equal(g.secondaryIDs, model.SecondaryIDs)
}
func (g *GridViewItem) Update(model GridViewItemModel) {
+3 -2
View File
@@ -3,6 +3,7 @@ package widgets
import (
"fmt"
"log"
"slices"
"sort"
"strconv"
"strings"
@@ -271,7 +272,7 @@ func (t *Tracklist) Sorting() TracklistSort {
func (t *Tracklist) SetSorting(sorting TracklistSort) {
if sorting.ColumnName == "" {
// nil case - reset current sort
if sharedutil.SliceContains(columns, t.sorting.ColumnName) {
if slices.Contains(columns, t.sorting.ColumnName) {
t.hdr.SetSorting(ListHeaderSort{ColNumber: ColNumber(t.sorting.ColumnName), Type: SortNone})
}
return
@@ -667,7 +668,7 @@ func (t *Tracklist) lenTracks() int {
}
func ColNumber(colName string) int {
i := sharedutil.IndexOf(columns, colName)
i := slices.Index(columns, colName)
if i < 0 {
log.Printf("error: Tracklist: invalid column name %s", colName)
}