chore: better info about what blocks the installer

This commit is contained in:
goat 2022-07-17 21:33:51 +02:00
parent 8cb28d0ebe
commit 3ec6d05ec0
No known key found for this signature in database
GPG key ID: 7773BB5B43BA52E5
3 changed files with 44 additions and 3 deletions

View file

@ -265,7 +265,45 @@ namespace Dalamud.Interface.Internal.Windows.PluginInstaller
ImGuiHelpers.CenteredText("Installing plugin...");
break;
case LoadingIndicatorKind.Manager:
ImGuiHelpers.CenteredText("Loading repositories and plugins...");
{
if (pluginManager.PluginsReady && !pluginManager.ReposReady)
{
ImGuiHelpers.CenteredText("Loading repositories...");
}
else if (!pluginManager.PluginsReady && pluginManager.ReposReady)
{
ImGuiHelpers.CenteredText("Loading installed plugins...");
}
else
{
ImGuiHelpers.CenteredText("Loading repositories and plugins...");
}
var currentProgress = 0;
var total = 0;
var pendingRepos = pluginManager.Repos.ToArray()
.Where(x => (x.State != PluginRepositoryState.Success &&
x.State != PluginRepositoryState.Fail) &&
x.IsEnabled)
.ToArray();
var allRepoCount =
pluginManager.Repos.Count(x => x.State != PluginRepositoryState.Fail && x.IsEnabled);
foreach (var repo in pendingRepos)
{
ImGuiHelpers.CenteredText($"{repo.PluginMasterUrl}: {repo.State}");
}
currentProgress += allRepoCount - pendingRepos.Length;
total += allRepoCount;
if (currentProgress != total)
{
ImGui.ProgressBar(currentProgress / (float)total, new Vector2(windowSize.X / 3, 50));
}
}
break;
default:
throw new ArgumentOutOfRangeException();

View file

@ -125,7 +125,7 @@ internal partial class PluginManager : IDisposable, IServiceType
/// <summary>
/// Gets a value indicating whether all added repos are not in progress.
/// </summary>
public bool ReposReady => this.Repos.All(repo => repo.State != PluginRepositoryState.InProgress);
public bool ReposReady => this.Repos.All(repo => repo.State != PluginRepositoryState.InProgress || repo.State != PluginRepositoryState.Fail);
/// <summary>
/// Gets a value indicating whether the plugin manager started in safe mode.
@ -492,7 +492,9 @@ internal partial class PluginManager : IDisposable, IServiceType
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public async Task ReloadPluginMastersAsync(bool notify = true)
{
Log.Information("Now reloading all PluginMasters...");
await Task.WhenAll(this.Repos.Select(repo => repo.ReloadPluginMasterAsync()));
Log.Information("PluginMasters reloaded, now refiltering...");
this.RefilterPluginMasters(notify);
}

View file

@ -24,6 +24,7 @@ internal class PluginRepository
private static readonly HttpClient HttpClient = new()
{
Timeout = TimeSpan.FromSeconds(20),
DefaultRequestHeaders =
{
CacheControl = new CacheControlHeaderValue
@ -109,7 +110,7 @@ internal class PluginRepository
this.PluginMaster = pluginMaster.AsReadOnly();
Log.Debug($"Successfully fetched repo: {this.PluginMasterUrl}");
Log.Information($"Successfully fetched repo: {this.PluginMasterUrl}");
this.State = PluginRepositoryState.Success;
}
catch (Exception ex)