1313
1414namespace Stylophone . Common . ViewModels
1515{
16+
1617 public abstract partial class LibraryViewModelBase : ViewModelBase
1718 {
19+ private record Album
20+ {
21+ public string Name { get ; set ; }
22+ public string SortName { get ; set ; }
23+ }
24+
1825 private INavigationService _navigationService ;
1926 private MPDConnectionService _mpdService ;
2027 private AlbumViewModelFactory _albumVmFactory ;
@@ -40,9 +47,13 @@ public async Task LoadDataAsync()
4047 FilteredSource . CollectionChanged += ( s , e ) => OnPropertyChanged ( nameof ( IsSourceEmpty ) ) ;
4148
4249 Source . Clear ( ) ;
43- var response = await _mpdService . SafelySendCommandAsync ( new ListCommand ( MpdTags . AlbumSort ) ) ;
50+ var albumList = await _mpdService . SafelySendCommandAsync ( new ListCommand ( MpdTags . Album ) ) ;
51+ var albumSortList = await _mpdService . SafelySendCommandAsync ( new ListCommand ( MpdTags . AlbumSort ) ) ;
52+
53+ // Create a list of tuples
54+ var response = albumList . Zip ( albumSortList , ( album , albumSort ) => new Album { Name = album , SortName = albumSort } ) ;
4455
45- if ( response != null )
56+ if ( albumSortList != null )
4657 GroupAlbumsByName ( response ) ;
4758
4859 if ( Source . Count > 0 )
@@ -63,10 +74,10 @@ public void FilterLibrary(string text)
6374 AddBack ( filtered ) ;
6475 }
6576
66- public void GroupAlbumsByName ( List < string > albums )
77+ private void GroupAlbumsByName ( IEnumerable < Album > albums )
6778 {
6879 var query = from item in albums
69- group item by GetGroupHeader ( item ) into g
80+ group item by GetGroupHeader ( item . SortName ) into g
7081 orderby g . Key
7182 select new { GroupName = g . Key , Items = g } ;
7283
@@ -76,9 +87,9 @@ orderby g.Key
7687 //GroupInfosList info = new GroupInfosList();
7788 //info.Key = g.GroupName + " (" + g.Items.Count() + ")";
7889
79- foreach ( var item in g . Items . OrderBy ( s => s . ToLower ( ) ) )
90+ foreach ( var item in g . Items . OrderBy ( s => s . SortName . ToLower ( ) ) )
8091 {
81- Source . Add ( _albumVmFactory . GetAlbumViewModel ( item ) ) ;
92+ Source . Add ( _albumVmFactory . GetAlbumViewModel ( item . Name ) ) ;
8293 }
8394 }
8495 }
0 commit comments