Merge pull request #349 from adamantike/misc/add-FilterMap-util
misc: Add FilterMapSlice util
This commit is contained in:
@@ -31,6 +31,19 @@ func MapSlice[T any, U any](ts []T, f func(T) U) []U {
|
|||||||
return result
|
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 {
|
func Reversed[T any](ts []T) []T {
|
||||||
if ts == nil {
|
if ts == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -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 {
|
func SelectedTracks(tracks []*TrackListModel) []*mediaprovider.Track {
|
||||||
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) *mediaprovider.Track {
|
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (*mediaprovider.Track, bool) {
|
||||||
return tm.Track
|
return tm.Track, tm.Selected
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func SelectedTrackIDs(tracks []*TrackListModel) []string {
|
func SelectedTrackIDs(tracks []*TrackListModel) []string {
|
||||||
return sharedutil.MapSlice(SelectedTrackModels(tracks), func(tm *TrackListModel) string {
|
return sharedutil.FilterMapSlice(tracks, func(tm *TrackListModel) (string, bool) {
|
||||||
return tm.Track.ID
|
return tm.Track.ID, tm.Selected
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user