fix: don't try to reload pluginmaster when it already is being reloaded

This commit is contained in:
goat 2020-06-08 21:22:07 +02:00
parent 07a0b3903f
commit 9752ac493d
3 changed files with 27 additions and 22 deletions

View file

@ -42,7 +42,8 @@ namespace Dalamud.Plugin
this.dalamud = dalamud;
this.gameVersion = gameVersion;
this.dalamud.PluginRepository.ReloadPluginMaster();
if (this.dalamud.PluginRepository.State != PluginRepository.InitializationState.InProgress)
this.dalamud.PluginRepository.ReloadPluginMasterAsync();
}
public bool Draw() {

View file

@ -34,31 +34,35 @@ namespace Dalamud.Plugin
this.dalamud = dalamud;
this.pluginDirectory = pluginDirectory;
State = InitializationState.InProgress;
Task.Run(ReloadPluginMaster).ContinueWith(t => {
ReloadPluginMasterAsync();
}
public void ReloadPluginMasterAsync()
{
Task.Run(() => {
State = InitializationState.InProgress;
try
{
using var client = new WebClient();
var data = client.DownloadString(PluginRepoBaseUrl + "pluginmaster.json");
this.PluginMaster = JsonConvert.DeserializeObject<ReadOnlyCollection<PluginDefinition>>(data);
State = InitializationState.Success;
}
catch (Exception ex)
{
Log.Error(ex, "Could not download PluginMaster");
State = InitializationState.Fail;
}
}).ContinueWith(t => {
if (t.IsFaulted)
State = InitializationState.Fail;
});
}
public void ReloadPluginMaster()
{
try
{
using var client = new WebClient();
var data = client.DownloadString(PluginRepoBaseUrl + "pluginmaster.json");
this.PluginMaster = JsonConvert.DeserializeObject<ReadOnlyCollection<PluginDefinition>>(data);
State = InitializationState.Success;
}
catch(Exception ex) {
Log.Error(ex, "Could not download PluginMaster");
State = InitializationState.Fail;
}
}
public bool InstallPlugin(PluginDefinition definition, bool enableAfterInstall = true) {
try
{