@@ -11,75 +11,64 @@ namespace CodeHub.Core.ViewModels
1111{
1212 public static class ViewModelExtensions
1313 {
14- public static void RequestModel < TRequest > ( this MvxViewModel viewModel , GitHubRequest < TRequest > request , bool forceDataRefresh , Action < GitHubResponse < TRequest > > update ) where TRequest : new ( )
14+ public static async Task RequestModel < TRequest > ( this MvxViewModel viewModel , GitHubRequest < TRequest > request , bool forceDataRefresh , Action < GitHubResponse < TRequest > > update ) where TRequest : new ( )
1515 {
16- var stopWatch = new System . Diagnostics . Stopwatch ( ) ;
17- stopWatch . Start ( ) ;
18-
1916 if ( forceDataRefresh )
2017 {
2118 request . CheckIfModified = false ;
2219 request . RequestFromCache = false ;
2320 }
2421
25- var response = Mvx . Resolve < IApplicationService > ( ) . Client . Execute ( request ) ;
26- stopWatch . Stop ( ) ;
27-
28- Console . WriteLine ( "Request executed in: " + stopWatch . ElapsedMilliseconds + "ms" ) ;
29-
30- stopWatch . Reset ( ) ;
31- stopWatch . Start ( ) ;
22+ var response = await Mvx . Resolve < IApplicationService > ( ) . Client . ExecuteAsync ( request ) ;
3223 update ( response ) ;
33- stopWatch . Stop ( ) ;
34-
35- Console . WriteLine ( "View updated in: " + stopWatch . ElapsedMilliseconds + "ms" ) ;
36-
3724
3825 if ( response . WasCached )
3926 {
40- Task . Run ( ( ) => {
27+ Task . Run ( async ( ) => {
4128 try
4229 {
43- request . RequestFromCache = false ;
44- update ( Mvx . Resolve < IApplicationService > ( ) . Client . Execute ( request ) ) ;
30+ request . RequestFromCache = false ;
31+ var r = await Mvx . Resolve < IApplicationService > ( ) . Client . ExecuteAsync ( request ) ;
32+ update ( r ) ;
4533 }
4634 catch ( NotModifiedException )
4735 {
4836 Console . WriteLine ( "Not modified: " + request . Url ) ;
4937 }
50- catch ( Exception )
38+ catch ( Exception )
5139 {
5240 Console . WriteLine ( "SHIT! " + request . Url ) ;
5341 }
5442 } ) ;
5543 }
5644 }
5745
58- public static void CreateMore < T > ( this MvxViewModel viewModel ,
59- GitHubResponse < T > response ,
60- Action < Action > assignMore ,
61- Action < T > newDataAction ) where T : new ( )
46+ public static void CreateMore < T > ( this MvxViewModel viewModel , GitHubResponse < T > response ,
47+ Action < Task > assignMore , Action < T > newDataAction ) where T : new ( )
6248 {
6349 if ( response . More == null )
6450 {
6551 assignMore ( null ) ;
6652 return ;
6753 }
6854
69- assignMore ( ( ) => {
70- response . More . UseCache = false ;
71- var moreResponse = Mvx . Resolve < IApplicationService > ( ) . Client . Execute ( response . More ) ;
72- viewModel . CreateMore ( moreResponse , assignMore , newDataAction ) ;
73- newDataAction ( moreResponse . Data ) ;
74- } ) ;
55+ var task = new Task ( async ( ) =>
56+ {
57+ response . More . UseCache = false ;
58+ var moreResponse = await Mvx . Resolve < IApplicationService > ( ) . Client . ExecuteAsync ( response . More ) ;
59+ viewModel . CreateMore ( moreResponse , assignMore , newDataAction ) ;
60+ newDataAction ( moreResponse . Data ) ;
61+ } ) ;
62+
63+ assignMore ( task ) ;
7564 }
7665
7766 public static Task SimpleCollectionLoad < T > ( this CollectionViewModel < T > viewModel , GitHubRequest < List < T > > request , bool forceDataRefresh ) where T : new ( )
7867 {
79- return Task . Run ( ( ) => viewModel . RequestModel ( request , forceDataRefresh , response => {
80- viewModel . CreateMore ( response , m => viewModel . MoreItems = m , d => viewModel . Items . AddRange ( d ) ) ;
68+ return viewModel . RequestModel ( request , forceDataRefresh , response => {
69+ viewModel . CreateMore ( response , m => viewModel . MoreItems = m , viewModel . Items . AddRange ) ;
8170 viewModel . Items . Reset ( response . Data ) ;
82- } ) ) ;
71+ } ) ;
8372 }
8473 }
8574}
0 commit comments