diff --git a/ui/albumgrid.go b/ui/albumgrid.go index caf2f73..0908fa2 100644 --- a/ui/albumgrid.go +++ b/ui/albumgrid.go @@ -62,6 +62,19 @@ func NewAlbumGrid(iter backend.AlbumIterator, fetch ImageFetcher) *AlbumGrid { return ag } +func (ag *AlbumGrid) Clear() { + ag.albums = nil + ag.done = true +} + +func (ag *AlbumGrid) Reset(iter backend.AlbumIterator) { + ag.albums = nil + ag.fetching = false + ag.done = false + ag.iter = iter + ag.fetchMoreAlbums(36) +} + func (ag *AlbumGrid) doUpdateAlbumCard(albumIdx int, ac *widgets.AlbumCard) { album := ag.albums[albumIdx] if ac.PrevAlbumID == album.ID { diff --git a/ui/albumspage.go b/ui/albumspage.go index b02c3d1..e891459 100644 --- a/ui/albumspage.go +++ b/ui/albumspage.go @@ -79,12 +79,18 @@ func (a *AlbumsPage) OnSearched(query string) { a.searchText = query if query == "" { a.container.Objects[0] = a.grid - a.searchGrid = nil + if a.searchGrid != nil { + a.searchGrid.Clear() + } a.Refresh() return } - a.searchGrid = NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail) - a.searchGrid.OnPlayAlbum = a.onPlayAlbum + if a.searchGrid == nil { + a.searchGrid = NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail) + a.searchGrid.OnPlayAlbum = a.onPlayAlbum + } else { + a.searchGrid.Reset(a.lm.SearchIter(query)) + } a.container.Objects[0] = a.searchGrid a.Refresh() } @@ -96,8 +102,7 @@ func (a *AlbumsPage) onPlayAlbum(albumID string) { } func (a *AlbumsPage) onSortOrderChanged(order string) { - a.grid = NewAlbumGrid(a.lm.AlbumsIter(backend.AlbumSortOrder(order)), a.im.GetAlbumThumbnail) - a.grid.OnPlayAlbum = a.onPlayAlbum + a.grid.Reset(a.lm.AlbumsIter(backend.AlbumSortOrder(order))) if a.searchText == "" { a.container.Objects[0] = a.grid a.Refresh()