attach play action to track results in quick search
This commit is contained in:
@@ -37,6 +37,8 @@ type Favorites struct {
|
||||
type MediaProvider interface {
|
||||
SetPrefetchCoverCallback(cb func(coverArtID string))
|
||||
|
||||
GetTrack(trackID string) (*Track, error)
|
||||
|
||||
GetAlbum(albumID string) (*AlbumWithTracks, error)
|
||||
|
||||
GetAlbumInfo(albumID string) (*AlbumInfo, error)
|
||||
|
||||
@@ -55,6 +55,14 @@ func (s *subsonicMediaProvider) EditPlaylistTracks(id string, trackIDsToAdd []st
|
||||
return s.client.UpdatePlaylistTracks(id, trackIDsToAdd, trackIndexesToRemove)
|
||||
}
|
||||
|
||||
func (s *subsonicMediaProvider) GetTrack(trackID string) (*mediaprovider.Track, error) {
|
||||
tr, err := s.client.GetSong(trackID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return toTrack(tr), nil
|
||||
}
|
||||
|
||||
func (s *subsonicMediaProvider) GetAlbum(albumID string) (*mediaprovider.AlbumWithTracks, error) {
|
||||
al, err := s.client.GetAlbum(albumID)
|
||||
if err != nil {
|
||||
|
||||
@@ -214,6 +214,15 @@ func (p *PlaybackManager) PlayPlaylist(playlistID string, firstTrack int, shuffl
|
||||
return p.player.PlayTrackAt(firstTrack)
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) PlayTrack(trackID string) error {
|
||||
tr, err := p.sm.Server.GetTrack(trackID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.LoadTracks([]*mediaprovider.Track{tr}, false, false)
|
||||
return p.PlayFromBeginning()
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) PlayFromBeginning() error {
|
||||
return p.player.PlayFromBeginning()
|
||||
}
|
||||
|
||||
@@ -503,7 +503,7 @@ func (c *Controller) ShowQuickSearch() {
|
||||
case mediaprovider.ContentTypeArtist:
|
||||
c.NavigateTo(ArtistRoute(id))
|
||||
case mediaprovider.ContentTypeTrack:
|
||||
// TODO
|
||||
go c.App.PlaybackManager.PlayTrack(id)
|
||||
case mediaprovider.ContentTypePlaylist:
|
||||
c.NavigateTo(PlaylistRoute(id))
|
||||
case mediaprovider.ContentTypeGenre:
|
||||
|
||||
Reference in New Issue
Block a user