only create filter provider if download is complete
This commit is contained in:
parent
14c14f7626
commit
3eccbaa8b8
14
EDDB/API.cs
14
EDDB/API.cs
@ -10,6 +10,10 @@ namespace NonaBGS.EDDB {
|
||||
|
||||
private string systems_file = null;
|
||||
|
||||
public delegate void DatabaseAvailableDelegate();
|
||||
|
||||
public event DatabaseAvailableDelegate SystemsAvailable;
|
||||
|
||||
public string SystemsFile => systems_file;
|
||||
|
||||
public string Cache {
|
||||
@ -27,13 +31,15 @@ namespace NonaBGS.EDDB {
|
||||
client.DownloadDataCompleted += Client_DownloadDataCompleted;
|
||||
}
|
||||
|
||||
private void DownloadFile(string url, string file) {
|
||||
client.DownloadFileAsync(new Uri(url), file);
|
||||
private void DownloadFile(string url, string file, DatabaseAvailableDelegate notifier) {
|
||||
client.DownloadFileAsync(new Uri(url), file, notifier);
|
||||
}
|
||||
|
||||
public void Download(bool force) {
|
||||
if (!HaveSystemsFile || force) {
|
||||
DownloadFile(EDDB_SYSTEMS_ARCHIVE, systems_file);
|
||||
DownloadFile(EDDB_SYSTEMS_ARCHIVE, systems_file, SystemsAvailable);
|
||||
} else if (HaveSystemsFile) {
|
||||
SystemsAvailable?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,6 +60,8 @@ namespace NonaBGS.EDDB {
|
||||
}
|
||||
|
||||
private void Client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) {
|
||||
DatabaseAvailableDelegate notifier = e.UserState as DatabaseAvailableDelegate;
|
||||
notifier?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,8 +20,6 @@ namespace NonaBGS {
|
||||
private Report report = new Report();
|
||||
private Config config = new Config();
|
||||
private API api = null;
|
||||
private PopulatedSystems systems_db = null;
|
||||
private SystemSuggestionProvider systems_provider = null;
|
||||
|
||||
public Config Config => config;
|
||||
|
||||
@ -54,12 +52,19 @@ namespace NonaBGS {
|
||||
Log(e.Message);
|
||||
}
|
||||
|
||||
api.SystemsAvailable += Api_SystemsAvailable;
|
||||
|
||||
try {
|
||||
SyncDatabases();
|
||||
} catch (Exception e) {
|
||||
Log(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
systems_db = api.MakePopulatedSystems();
|
||||
systems_provider = new SystemSuggestionProvider(systems_db);
|
||||
system.Provider = systems_provider;
|
||||
private void Api_SystemsAvailable() {
|
||||
try {
|
||||
var systems_db = api.MakePopulatedSystems();
|
||||
system.Provider = new SystemSuggestionProvider(systems_db);
|
||||
} catch (Exception e) {
|
||||
Log(e.Message);
|
||||
}
|
||||
|
Reference in New Issue
Block a user