Skip to content

Commit

Permalink
Merge pull request #349 from adamantike/misc/add-FilterMap-util
Browse files Browse the repository at this point in the history
misc: Add FilterMapSlice util
  • Loading branch information
dweymouth authored Mar 19, 2024
2 parents 668f2f4 + 0c17ac3 commit 1c34d4c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
13 changes: 13 additions & 0 deletions sharedutil/sharedutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ func MapSlice[T any, U any](ts []T, f func(T) U) []U {
return result
}

func FilterMapSlice[T any, U any](ts []T, f func(T) (U, bool)) []U {
if ts == nil {
return nil
}
result := make([]U, 0)
for _, t := range ts {
if u, ok := f(t); ok {
result = append(result, u)
}
}
return result
}

func Reversed[T any](ts []T) []T {
if ts == nil {
return nil
Expand Down
14 changes: 4 additions & 10 deletions ui/util/tracklistutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,15 @@ func ToTrackListModels(trs []*mediaprovider.Track) []*TrackListModel {
})
}

func SelectedTrackModels(tracks []*TrackListModel) []*TrackListModel {
return sharedutil.FilterSlice(tracks, func(tm *TrackListModel) bool {
return tm.Selected
})
}

func SelectedTracks(tracks []*TrackListModel) []*mediaprovider.Track {
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) *mediaprovider.Track {
return tm.Track
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (*mediaprovider.Track, bool) {
return tm.Track, tm.Selected
})
}

func SelectedTrackIDs(tracks []*TrackListModel) []string {
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) string {
return tm.Track.ID
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (string, bool) {
return tm.Track.ID, tm.Selected
})
}

Expand Down

0 comments on commit 1c34d4c

Please sign in to comment.