@@ -10,7 +10,7 @@ namespace Desktop.Project;
1010
1111public class TaskListViewModel : ViewModelBase
1212{
13- private readonly IEnumerable < ITaskRepository > taskRepositories ;
13+ private readonly IReadOnlyList < ITaskRepository > taskRepositories ;
1414 private readonly IMessageNotifier messageNotifier ;
1515 public ObservableCollection < Task > Tasks { get ; } = [ ] ;
1616
@@ -21,7 +21,7 @@ public TaskListViewModel(
2121 TaskCreationViewModel taskCreationViewModel ,
2222 IMessageNotifier messageNotifier )
2323 {
24- this . taskRepositories = taskRepositories ;
24+ this . taskRepositories = taskRepositories . ToArray ( ) ;
2525 this . messageNotifier = messageNotifier ;
2626
2727 Add = new RelayCommand ( ( ) =>
@@ -36,18 +36,18 @@ public TaskListViewModel(
3636
3737 Delete = new AsyncRelayCommand < Task > ( async taskToRemove =>
3838 {
39- foreach ( var repository in this . taskRepositories )
40- {
41- var deletion = await repository . Delete ( taskToRemove ! ) ;
42-
43- if ( deletion . Succeeded )
44- Tasks . Remove ( taskToRemove ! ) ;
45- else
46- messageNotifier . Notify (
47- "Task deletion has failed due to " +
48- "an internal error. The Task won't be deleted. " +
49- "Please, try again later." ) ;
50- }
39+ var deletingTasks = this . taskRepositories
40+ . Select ( x => x . Delete ( taskToRemove ! ) ) ;
41+ var results = await SystemTask . WhenAll ( deletingTasks ) ;
42+
43+ if ( results . Any ( x => ! x . Succeeded ) )
44+ messageNotifier . Notify (
45+ "Task deletion has failed due to " +
46+ "an internal error. The Task won't be deleted. " +
47+ "Please, try again later." ) ;
48+
49+ if ( results . Any ( x => x . Succeeded ) )
50+ Tasks . Remove ( taskToRemove ! ) ;
5151 } ) ;
5252 }
5353
0 commit comments