mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-02-04 02:43:32 +00:00
Hotfix workshop auto-update
This commit is contained in:
parent
4b58485956
commit
7c7d91eda9
@ -26,9 +26,8 @@ public class WorkshopService : IWorkshopService
|
||||
private readonly IWorkshopClient _workshopClient;
|
||||
private readonly PluginSetting<bool> _migratedBuiltInPlugins;
|
||||
|
||||
|
||||
|
||||
private bool _initialized;
|
||||
private bool _mutating;
|
||||
|
||||
public WorkshopService(ILogger logger,
|
||||
IHttpClientFactory httpClientFactory,
|
||||
@ -172,6 +171,10 @@ public class WorkshopService : IWorkshopService
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<EntryInstallResult> InstallEntry(IEntrySummary entry, IRelease release, Progress<StreamProgress> progress, CancellationToken cancellationToken)
|
||||
{
|
||||
_mutating = true;
|
||||
|
||||
try
|
||||
{
|
||||
IEntryInstallationHandler handler = _factory.CreateHandler(entry.EntryType);
|
||||
EntryInstallResult result = await handler.InstallAsync(entry, release, progress, cancellationToken);
|
||||
@ -182,9 +185,18 @@ public class WorkshopService : IWorkshopService
|
||||
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_mutating = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<EntryUninstallResult> UninstallEntry(InstalledEntry installedEntry, CancellationToken cancellationToken)
|
||||
{
|
||||
_mutating = true;
|
||||
|
||||
try
|
||||
{
|
||||
IEntryInstallationHandler handler = _factory.CreateHandler(installedEntry.EntryType);
|
||||
EntryUninstallResult result = await handler.UninstallAsync(installedEntry, cancellationToken);
|
||||
@ -195,6 +207,11 @@ public class WorkshopService : IWorkshopService
|
||||
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_mutating = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public List<InstalledEntry> GetInstalledEntries()
|
||||
@ -317,15 +334,27 @@ public class WorkshopService : IWorkshopService
|
||||
if (_migratedBuiltInPlugins.Value)
|
||||
return;
|
||||
|
||||
_mutating = true;
|
||||
|
||||
try
|
||||
{
|
||||
MigratingBuildInPlugins?.Invoke(this, EventArgs.Empty);
|
||||
|
||||
bool migrated = await BuiltInPluginsMigrator.Migrate(this, _workshopClient, _logger, _pluginRepository);
|
||||
_migratedBuiltInPlugins.Value = migrated;
|
||||
_migratedBuiltInPlugins.Save();
|
||||
}
|
||||
finally
|
||||
{
|
||||
_mutating = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProfileServiceOnProfileRemoved(object? sender, ProfileConfigurationEventArgs e)
|
||||
{
|
||||
if (_mutating)
|
||||
return;
|
||||
|
||||
InstalledEntry? entry = GetInstalledEntryByProfile(e.ProfileConfiguration);
|
||||
if (entry == null)
|
||||
return;
|
||||
@ -336,6 +365,9 @@ public class WorkshopService : IWorkshopService
|
||||
|
||||
private void PluginManagementServiceOnPluginRemoved(object? sender, PluginEventArgs e)
|
||||
{
|
||||
if (_mutating)
|
||||
return;
|
||||
|
||||
InstalledEntry? entry = GetInstalledEntryByPlugin(e.Plugin);
|
||||
if (entry == null)
|
||||
return;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user