diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs
index 9b407d724..ccb54cc99 100644
--- a/Dalamud/Plugin/Internal/PluginManager.cs
+++ b/Dalamud/Plugin/Internal/PluginManager.cs
@@ -202,7 +202,7 @@ internal partial class PluginManager : IDisposable, IServiceType
///
/// Gets a value indicating whether all added repos are not in progress.
///
- public bool ReposReady => this.Repos.All(repo => repo.State != PluginRepositoryState.InProgress);
+ public bool ReposReady { get; private set; }
///
/// Gets a value indicating whether the plugin manager started in safe mode.
@@ -649,15 +649,27 @@ internal partial class PluginManager : IDisposable, IServiceType
public async Task ReloadPluginMastersAsync(bool notify = true)
{
Log.Information("Now reloading all PluginMasters...");
+ this.ReposReady = false;
- Debug.Assert(!this.Repos.First().IsThirdParty, "First repository should be main repository");
- await this.Repos.First().ReloadPluginMasterAsync(); // Load official repo first
+ try
+ {
+ Debug.Assert(!this.Repos.First().IsThirdParty, "First repository should be main repository");
+ await this.Repos.First().ReloadPluginMasterAsync(); // Load official repo first
- await Task.WhenAll(this.Repos.Skip(1).Select(repo => repo.ReloadPluginMasterAsync()));
+ await Task.WhenAll(this.Repos.Skip(1).Select(repo => repo.ReloadPluginMasterAsync()));
- Log.Information("PluginMasters reloaded, now refiltering...");
+ Log.Information("PluginMasters reloaded, now refiltering...");
- this.RefilterPluginMasters(notify);
+ this.RefilterPluginMasters(notify);
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex, "Could not reload plugin repositories");
+ }
+ finally
+ {
+ this.ReposReady = true;
+ }
}
///