@@ -43,6 +43,7 @@ internal class ManagerController
43
43
44
44
private readonly AsyncDelegateCommand checkStatusCommand ;
45
45
private readonly DelegateCommand copyUrlCommand ;
46
+ private readonly DelegateCommand checkIfDatabasesCompleteCommand ;
46
47
private readonly AsyncDelegateCommand addBlogCommand ;
47
48
private readonly DelegateCommand autoDownloadCommand ;
48
49
private readonly DelegateCommand enqueueSelectedCommand ;
@@ -88,6 +89,7 @@ public ManagerController(IShellService shellService, ISelectionService selection
88
89
enqueueSelectedCommand = new DelegateCommand ( EnqueueSelected , CanEnqueueSelected ) ;
89
90
loadLibraryCommand = new AsyncDelegateCommand ( LoadLibraryAsync , CanLoadLibrary ) ;
90
91
loadAllDatabasesCommand = new AsyncDelegateCommand ( LoadAllDatabasesAsync , CanLoadAllDatbases ) ;
92
+ checkIfDatabasesCompleteCommand = new DelegateCommand ( CheckIfDatabasesComplete , CanCheckIfDatabasesComplete ) ;
91
93
listenClipboardCommand = new DelegateCommand ( ListenClipboard ) ;
92
94
autoDownloadCommand = new DelegateCommand ( EnqueueAutoDownload , CanEnqueueAutoDownload ) ;
93
95
showDetailsCommand = new DelegateCommand ( ShowDetailsCommand ) ;
@@ -113,6 +115,7 @@ public async Task Initialize()
113
115
crawlerService . EnqueueSelectedCommand = enqueueSelectedCommand ;
114
116
crawlerService . LoadLibraryCommand = loadLibraryCommand ;
115
117
crawlerService . LoadAllDatabasesCommand = loadAllDatabasesCommand ;
118
+ crawlerService . CheckIfDatabasesCompleteCommand = checkIfDatabasesCompleteCommand ;
116
119
crawlerService . AutoDownloadCommand = autoDownloadCommand ;
117
120
crawlerService . ListenClipboardCommand = listenClipboardCommand ;
118
121
crawlerService . PropertyChanged += CrawlerServicePropertyChanged ;
@@ -128,6 +131,7 @@ public async Task Initialize()
128
131
ManagerViewModel . QueueItems = QueueManager . Items ;
129
132
QueueManager . Items . CollectionChanged += QueueItemsCollectionChanged ;
130
133
ManagerViewModel . QueueItems . CollectionChanged += ManagerViewModel . QueueItemsCollectionChanged ;
134
+ BlogManagerFinishedLoadingLibrary += OnBlogManagerFinishedLoadingLibrary ;
131
135
BlogManagerFinishedLoadingDatabases += OnBlogManagerFinishedLoadingDatabases ;
132
136
133
137
shellService . ContentView = ManagerViewModel . View ;
@@ -144,6 +148,11 @@ public void Shutdown()
144
148
{
145
149
}
146
150
151
+ private void OnBlogManagerFinishedLoadingLibrary ( object sender , EventArgs e )
152
+ {
153
+ crawlerService . LibraryLoaded . SetResult ( true ) ;
154
+ }
155
+
147
156
private void OnBlogManagerFinishedLoadingDatabases ( object sender , EventArgs e )
148
157
{
149
158
crawlerService . DatabasesLoaded . SetResult ( true ) ;
@@ -164,8 +173,9 @@ private void QueueItemsCollectionChanged(object sender, NotifyCollectionChangedE
164
173
private async Task LoadDataBasesAsync ( )
165
174
{
166
175
// TODO: Methods have side effects!
176
+ // They remove blogs from the blog manager.
167
177
await LoadLibraryAsync ( ) ;
168
- await LoadAllDatabasesAsync ( ) ;
178
+ await LoadAllDatabasesAsync ( ) ;
169
179
CheckIfDatabasesComplete ( ) ;
170
180
await CheckBlogsOnlineStatusAsync ( ) ;
171
181
}
@@ -359,6 +369,11 @@ private bool CanLoadAllDatbases()
359
369
return ! crawlerService . IsCrawl ;
360
370
}
361
371
372
+ private bool CanCheckIfDatabasesComplete ( )
373
+ {
374
+ return crawlerService . DatabasesLoaded . Task . GetAwaiter ( ) . IsCompleted && crawlerService . LibraryLoaded . Task . GetAwaiter ( ) . IsCompleted ;
375
+ }
376
+
362
377
private bool CanEnqueueSelected ( )
363
378
{
364
379
return ManagerViewModel . SelectedBlogFile != null && ManagerViewModel . SelectedBlogFile . Online ;
0 commit comments