@@ -30,23 +30,35 @@ public static async Task TransferAsync<TTransferred>(
3030 IEnumerable < TTransferred > items ,
3131 Func < TTransferred , IProgress < IStorable > , CancellationToken , Task > callback ,
3232 CancellationToken cancellationToken = default )
33+ where TTransferred : IStorable
34+ {
35+ await TransferAsync ( transferViewModel , items , callback , x => x . Name , cancellationToken ) ;
36+ }
37+
38+ public static async Task TransferAsync < TTransferred > (
39+ this TransferViewModel transferViewModel ,
40+ IEnumerable < TTransferred > items ,
41+ Func < TTransferred , IProgress < IStorable > , CancellationToken , Task > callback ,
42+ Func < TTransferred , string > itemName ,
43+ CancellationToken cancellationToken = default )
3344 {
3445 var collection = items . ToOrAsCollection ( ) ;
3546 transferViewModel . IsProgressing = true ;
3647 transferViewModel . IsVisible = true ;
37- transferViewModel . Report ( new ( 0 , 0 , 0 ) ) ;
48+ transferViewModel . Report ( new ( 0 , collection . Count , collection . Count ) ) ;
3849 var counter = 0 ;
39- var reporter = new Progress < IStorable > ( _ =>
50+ var reporter = new Progress < IStorable > ( x =>
4051 {
4152 counter ++ ;
42- transferViewModel . Report ( new ( counter , 0 , 1 ) ) ;
53+ transferViewModel . Report ( new ( counter , 0 , x . Name ) ) ;
4354 } ) ;
4455
4556 for ( var i = 0 ; i < collection . Count ; i ++ )
4657 {
4758 cancellationToken . ThrowIfCancellationRequested ( ) ;
4859
4960 var item = collection . ElementAt ( i ) ;
61+ transferViewModel . Report ( new ( i , collection . Count , itemName ( item ) ) ) ;
5062 await callback ( item , reporter , cancellationToken ) ;
5163 }
5264
@@ -61,6 +73,16 @@ public static async Task TransferAsync<TTransferred>(
6173 Func < TTransferred , CancellationToken , Task > callback ,
6274 CancellationToken cancellationToken = default )
6375 where TTransferred : IStorable
76+ {
77+ await TransferAsync ( transferViewModel , items , callback , x => x . Name , cancellationToken ) ;
78+ }
79+
80+ public static async Task TransferAsync < TTransferred > (
81+ this TransferViewModel transferViewModel ,
82+ IEnumerable < TTransferred > items ,
83+ Func < TTransferred , CancellationToken , Task > callback ,
84+ Func < TTransferred , string > itemName ,
85+ CancellationToken cancellationToken = default )
6486 {
6587 var collection = items . ToOrAsCollection ( ) ;
6688 transferViewModel . IsProgressing = true ;
@@ -72,8 +94,8 @@ public static async Task TransferAsync<TTransferred>(
7294 cancellationToken . ThrowIfCancellationRequested ( ) ;
7395
7496 var item = collection . ElementAt ( i ) ;
97+ transferViewModel . Report ( new ( i , collection . Count , itemName ( item ) ) ) ;
7598 await callback ( item , cancellationToken ) ;
76- transferViewModel . Report ( new ( ( i + 1 ) , collection . Count , item . Name ) ) ;
7799 }
78100
79101 await Task . Delay ( 1000 , CancellationToken . None ) ;
0 commit comments