simplify onSearched

This commit is contained in:
Drew Weymouth
2024-05-23 16:09:26 -07:00
parent 21feca3265
commit b999d94e72
+28 -33
View File
@@ -15,11 +15,11 @@ import (
) )
type SelectPlaylist struct { type SelectPlaylist struct {
SearchDialog *SearchDialog SearchDialog *SearchDialog
mp mediaprovider.MediaProvider mp mediaprovider.MediaProvider
loggedInUser string loggedInUser string
allPlaylists []*mediaprovider.Playlist allPlaylistResuts []*mediaprovider.SearchResult
SkipDuplicates bool SkipDuplicates bool
} }
func NewSelectPlaylistDialog(mp mediaprovider.MediaProvider, im util.ImageFetcher, loggedInUser string) *SelectPlaylist { func NewSelectPlaylistDialog(mp mediaprovider.MediaProvider, im util.ImageFetcher, loggedInUser string) *SelectPlaylist {
@@ -47,53 +47,48 @@ func (sp *SelectPlaylist) onInit() ([]*mediaprovider.SearchResult, *widget.Check
log.Printf("error getting playlists: %s", err.Error()) log.Printf("error getting playlists: %s", err.Error())
return results, nil return results, nil
} }
sp.allPlaylists = sharedutil.FilterSlice(playlists, func(playlist *mediaprovider.Playlist) bool { userPlaylists := sharedutil.FilterSlice(playlists, func(playlist *mediaprovider.Playlist) bool {
return playlist.Owner == sp.loggedInUser return playlist.Owner == sp.loggedInUser
}) })
for _, playlist := range sp.allPlaylists { sp.allPlaylistResuts = sharedutil.MapSlice(userPlaylists, sp.playlistToSearchResult)
results = append(results, &mediaprovider.SearchResult{
Name: playlist.Name,
ID: playlist.ID,
CoverID: playlist.CoverArtID,
Type: mediaprovider.ContentTypePlaylist,
Size: playlist.TrackCount,
ArtistName: playlist.Name,
})
}
skipDuplicatesCheck := widget.NewCheck("Skip duplicates", func(checked bool) { skipDuplicatesCheck := widget.NewCheck("Skip duplicates", func(checked bool) {
sp.SkipDuplicates = checked sp.SkipDuplicates = checked
}) })
return results, skipDuplicatesCheck return results, skipDuplicatesCheck
} }
func (sp *SelectPlaylist) playlistToSearchResult(playlist *mediaprovider.Playlist) *mediaprovider.SearchResult {
if playlist == nil {
return nil
}
return &mediaprovider.SearchResult{
Name: playlist.Name,
ID: playlist.ID,
CoverID: playlist.CoverArtID,
Type: mediaprovider.ContentTypePlaylist,
Size: playlist.TrackCount,
ArtistName: playlist.Name,
}
}
func (sp *SelectPlaylist) onSearched(query string) []*mediaprovider.SearchResult { func (sp *SelectPlaylist) onSearched(query string) []*mediaprovider.SearchResult {
var results []*mediaprovider.SearchResult var results []*mediaprovider.SearchResult
var filteredPlaylists []*mediaprovider.Playlist
if query == "" { if query == "" {
filteredPlaylists = sp.allPlaylists results = sp.allPlaylistResuts
} else { } else {
filteredPlaylists = sharedutil.FilterSlice(sp.allPlaylists, func(playlist *mediaprovider.Playlist) bool { results = []*mediaprovider.SearchResult{{
Name: fmt.Sprintf("Create new playlist: %s", query),
Type: mediaprovider.ContentTypePlaylist,
}}
filteredPlaylists := sharedutil.FilterSlice(sp.allPlaylistResuts, func(playlist *mediaprovider.SearchResult) bool {
return strings.Contains( return strings.Contains(
sanitize.Accents(strings.ToLower(playlist.Name)), sanitize.Accents(strings.ToLower(playlist.Name)),
sanitize.Accents(strings.ToLower(query)), sanitize.Accents(strings.ToLower(query)),
) )
}) })
results = append(results, &mediaprovider.SearchResult{ results = append(results, filteredPlaylists...)
Name: fmt.Sprintf("Create new playlist: %s", query),
Type: mediaprovider.ContentTypePlaylist,
})
} }
for _, playlist := range filteredPlaylists {
results = append(results, &mediaprovider.SearchResult{
Name: playlist.Name,
ID: playlist.ID,
CoverID: playlist.CoverArtID,
Type: mediaprovider.ContentTypePlaylist,
Size: playlist.TrackCount,
ArtistName: playlist.Name,
})
}
return results return results
} }