@@ -47,7 +47,7 @@ public class ItemsViewModel : ReactiveObject, IRoutableViewModel
47
47
public IScreen HostScreen { get ; protected set ; } = null ! ;
48
48
49
49
// Commands
50
- public ReactiveCommand < Unit , IEnumerable < ItemDto > > LoadItemsCommand { get ; }
50
+ public ReactiveCommand < Unit , IList < ItemDto > > LoadItemsCommand { get ; }
51
51
public ReactiveCommand < Unit , Unit > ShowDetailsCommand { get ; }
52
52
53
53
// Input
@@ -56,9 +56,9 @@ public class ItemsViewModel : ReactiveObject, IRoutableViewModel
56
56
[ Reactive ] public ( Guid ? tagId , int index ) SelectedItem { get ; set ; }
57
57
58
58
// Output - OAPH must be initialized via `initialValue` parameter in .ToPropertyEx(...)
59
- [ ObservableAsProperty ] public IEnumerable < ItemDto > Items { get ; }
60
- [ ObservableAsProperty ] public IEnumerable < ItemDto > ItemsFiltered { get ; }
61
- [ ObservableAsProperty ] public IEnumerable < ItemTagDto > SelectedItemTags { get ; }
59
+ [ ObservableAsProperty ] public IList < ItemDto > Items { get ; }
60
+ [ ObservableAsProperty ] public IList < ItemDto > ItemsFiltered { get ; }
61
+ [ ObservableAsProperty ] public IList < ItemTagDto > SelectedItemTags { get ; }
62
62
[ ObservableAsProperty ] public bool IsLoading { get ; }
63
63
[ ObservableAsProperty ] public bool HasItems { get ; }
64
64
[ ObservableAsProperty ] public bool HasItemSelection { get ; }
@@ -85,7 +85,7 @@ public ItemsViewModel(
85
85
//LoadItemsCommand.ThrownExceptions.Subscribe(error => { /* Handle errors here */ });
86
86
LoadItemsCommand
87
87
. ObserveOn ( mainThreadScheduler )
88
- . ToPropertyEx ( this , x => x . Items , initialValue : Enumerable . Empty < ItemDto > ( ) ) ;
88
+ . ToPropertyEx ( this , x => x . Items , initialValue : new List < ItemDto > ( ) ) ;
89
89
90
90
var interval = TimeSpan . FromMinutes ( 5 ) ;
91
91
Observable . Timer ( interval , interval , mainThreadScheduler )
@@ -124,9 +124,9 @@ public ItemsViewModel(
124
124
. ToList ( ) ;
125
125
return r ;
126
126
} )
127
- . Catch ( Observable . Return ( Enumerable . Empty < ItemDto > ( ) ) )
127
+ . Catch ( Observable . Return ( Enumerable . Empty < ItemDto > ( ) . ToList ( ) ) )
128
128
. ObserveOn ( mainThreadScheduler )
129
- . ToPropertyEx ( this , x => x . ItemsFiltered , initialValue : Enumerable . Empty < ItemDto > ( ) ) ;
129
+ . ToPropertyEx ( this , x => x . ItemsFiltered , initialValue : new List < ItemDto > ( ) ) ;
130
130
131
131
this
132
132
. WhenAnyValue ( x => x . Items )
@@ -149,7 +149,7 @@ public ItemsViewModel(
149
149
. Select ( x => x . tagId ! . Value )
150
150
. SelectMany ( FetchDetailAsync )
151
151
. ObserveOn ( mainThreadScheduler )
152
- . ToPropertyEx ( this , x => x . SelectedItemTags , initialValue : Enumerable . Empty < ItemTagDto > ( ) ) ;
152
+ . ToPropertyEx ( this , x => x . SelectedItemTags , initialValue : new List < ItemTagDto > ( ) ) ;
153
153
}
154
154
155
155
private async Task < Unit > ShowDetails ( CancellationToken token )
@@ -172,13 +172,13 @@ private async Task<Unit> ShowDetails(CancellationToken token)
172
172
return await Task . FromResult ( Unit . Default ) ;
173
173
}
174
174
175
- private async Task < IEnumerable < ItemDto > > LoadItems ( )
175
+ private async Task < IList < ItemDto > > LoadItems ( )
176
176
{
177
177
var items = await _itemsService . GetAll ( ) ;
178
- return items ;
178
+ return items . ToList ( ) ;
179
179
}
180
180
181
- private async Task < IEnumerable < ItemTagDto > > FetchDetailAsync ( Guid id , CancellationToken token )
181
+ private async Task < IList < ItemTagDto > > FetchDetailAsync ( Guid id , CancellationToken token )
182
182
{
183
183
var tags = this . Items . Where ( x => x . ItemId == id ) . SelectMany ( x => x . Tags ) . ToList ( ) ;
184
184
return await Task . FromResult ( tags ) ;
0 commit comments