mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
fix(PluginInstallerWindow): use task for single update, correct error handling
This commit is contained in:
parent
112833be8b
commit
0cb0bff714
2 changed files with 30 additions and 7 deletions
|
|
@ -787,7 +787,22 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
|
||||
if (ImGuiComponents.IconButton(FontAwesomeIcon.Download))
|
||||
{
|
||||
this.dalamud.PluginManager.UpdateSinglePlugin(update, false);
|
||||
this.installStatus = OperationStatus.InProgress;
|
||||
|
||||
Task.Run(() => this.dalamud.PluginManager.UpdateSinglePlugin(update, false))
|
||||
.ContinueWith(task =>
|
||||
{
|
||||
// There is no need to set as Complete for an individual plugin installation
|
||||
this.installStatus = OperationStatus.Idle;
|
||||
|
||||
var errorMessage = Locs.ErrorModal_SingleUpdateFail(update.UpdateManifest.Name);
|
||||
this.DisplayErrorContinuation(task, errorMessage);
|
||||
|
||||
if (!task.Result.WasUpdated)
|
||||
{
|
||||
ShowErrorModal(errorMessage);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (ImGui.IsItemHovered())
|
||||
|
|
@ -986,7 +1001,7 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
{
|
||||
if (task.IsFaulted)
|
||||
{
|
||||
this.errorModalMessage = state as string;
|
||||
var errorModalMessage = state as string;
|
||||
|
||||
foreach (var ex in task.Exception.InnerExceptions)
|
||||
{
|
||||
|
|
@ -995,7 +1010,7 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
Log.Error(ex, "Plugin installer threw an error");
|
||||
#if DEBUG
|
||||
if (!string.IsNullOrEmpty(ex.Message))
|
||||
this.errorModalMessage += $"\n\n{ex.Message}";
|
||||
errorModalMessage += $"\n\n{ex.Message}";
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
|
@ -1003,13 +1018,12 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
Log.Error(ex, "Plugin installer threw an unexpected error");
|
||||
#if DEBUG
|
||||
if (!string.IsNullOrEmpty(ex.Message))
|
||||
this.errorModalMessage += $"\n\n{ex.Message}";
|
||||
errorModalMessage += $"\n\n{ex.Message}";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
this.errorModalDrawing = true;
|
||||
this.errorModalOnNextFrame = true;
|
||||
this.ShowErrorModal(errorModalMessage);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1017,6 +1031,13 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
return true;
|
||||
}
|
||||
|
||||
private void ShowErrorModal(string message)
|
||||
{
|
||||
this.errorModalMessage = message;
|
||||
this.errorModalDrawing = true;
|
||||
this.errorModalOnNextFrame = true;
|
||||
}
|
||||
|
||||
[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:Elements should appear in the correct order", Justification = "Disregard here")]
|
||||
private static class Locs
|
||||
{
|
||||
|
|
@ -1176,6 +1197,8 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
|
||||
public static string ErrorModal_InstallFail(string name) => Loc.Localize("InstallerInstallFail", "Failed to install plugin {0}.").Format(name);
|
||||
|
||||
public static string ErrorModal_SingleUpdateFail(string name) => Loc.Localize("InstallerSingleUpdateFail", "Failed to update plugin {0}.").Format(name);
|
||||
|
||||
public static string ErrorModal_EnableFail(string name) => Loc.Localize("InstallerEnableFail", "Failed to enable plugin {0}.").Format(name);
|
||||
|
||||
public static string ErrorModal_DisableFail(string name) => Loc.Localize("InstallerDisableFail", "Failed to disable plugin {0}.").Format(name);
|
||||
|
|
|
|||
|
|
@ -635,7 +635,7 @@ namespace Dalamud.Plugin.Internal
|
|||
{
|
||||
InternalName = plugin.Manifest.InternalName,
|
||||
Name = plugin.Manifest.Name,
|
||||
Version = metadata.UseTesting ? metadata.UpdateManifest.TestingAssemblyVersion : metadata.UpdateManifest.AssemblyVersion
|
||||
Version = metadata.UseTesting ? metadata.UpdateManifest.TestingAssemblyVersion : metadata.UpdateManifest.AssemblyVersion,
|
||||
};
|
||||
|
||||
if (dryRun)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue