misc: Add FilterMapSlice util

For the scenarios where both `Filter` and `Map` are being applied,
having this util should be faster, as it avoids the creation of an extra
slice during the intermediate step.
This commit is contained in:
Michael Manganiello
2024-03-17 13:44:17 -03:00
parent 3d61659d07
commit 0c17ac3f8d
2 changed files with 17 additions and 10 deletions
+4 -10
View File
@@ -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
})
}