1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Plugins - Remove related device settings when clearing plugin settings

This commit is contained in:
Robert 2021-09-22 21:42:42 +02:00
parent 26d8322b15
commit daac4e44ee
3 changed files with 10 additions and 1 deletions

View File

@ -457,6 +457,7 @@ namespace Artemis.Core
{ {
// Other properties are computed // Other properties are computed
DeviceEntity.Id = Identifier; DeviceEntity.Id = Identifier;
DeviceEntity.DeviceProvider = DeviceProvider.Plugin.Guid.ToString();
DeviceEntity.InputIdentifiers.Clear(); DeviceEntity.InputIdentifiers.Clear();
foreach (ArtemisDeviceInputIdentifier identifier in InputIdentifiers) foreach (ArtemisDeviceInputIdentifier identifier in InputIdentifiers)

View File

@ -10,6 +10,7 @@ using Artemis.Core.DeviceProviders;
using Artemis.Core.Ninject; using Artemis.Core.Ninject;
using Artemis.Storage.Entities.General; using Artemis.Storage.Entities.General;
using Artemis.Storage.Entities.Plugins; using Artemis.Storage.Entities.Plugins;
using Artemis.Storage.Entities.Surface;
using Artemis.Storage.Repositories.Interfaces; using Artemis.Storage.Repositories.Interfaces;
using McMaster.NETCore.Plugins; using McMaster.NETCore.Plugins;
using Ninject; using Ninject;
@ -28,15 +29,17 @@ namespace Artemis.Core.Services
private readonly IKernel _kernel; private readonly IKernel _kernel;
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IPluginRepository _pluginRepository; private readonly IPluginRepository _pluginRepository;
private readonly IDeviceRepository _deviceRepository;
private readonly IQueuedActionRepository _queuedActionRepository; private readonly IQueuedActionRepository _queuedActionRepository;
private readonly List<Plugin> _plugins; private readonly List<Plugin> _plugins;
private bool _isElevated; private bool _isElevated;
public PluginManagementService(IKernel kernel, ILogger logger, IPluginRepository pluginRepository, IQueuedActionRepository queuedActionRepository) public PluginManagementService(IKernel kernel, ILogger logger, IPluginRepository pluginRepository, IDeviceRepository deviceRepository, IQueuedActionRepository queuedActionRepository)
{ {
_kernel = kernel; _kernel = kernel;
_logger = logger; _logger = logger;
_pluginRepository = pluginRepository; _pluginRepository = pluginRepository;
_deviceRepository = deviceRepository;
_queuedActionRepository = queuedActionRepository; _queuedActionRepository = queuedActionRepository;
_plugins = new List<Plugin>(); _plugins = new List<Plugin>();
@ -572,7 +575,11 @@ namespace Artemis.Core.Services
{ {
if (plugin.IsEnabled) if (plugin.IsEnabled)
throw new ArtemisCoreException("Cannot remove the settings of an enabled plugin"); throw new ArtemisCoreException("Cannot remove the settings of an enabled plugin");
_pluginRepository.RemoveSettings(plugin.Guid); _pluginRepository.RemoveSettings(plugin.Guid);
foreach (DeviceEntity deviceEntity in _deviceRepository.GetAll().Where(e => e.DeviceProvider == plugin.Guid.ToString()))
_deviceRepository.Remove(deviceEntity);
plugin.Settings?.ClearSettings(); plugin.Settings?.ClearSettings();
} }

View File

@ -12,6 +12,7 @@ namespace Artemis.Storage.Entities.Surface
} }
public string Id { get; set; } public string Id { get; set; }
public string DeviceProvider { get; set; }
public float X { get; set; } public float X { get; set; }
public float Y { get; set; } public float Y { get; set; }
public float Rotation { get; set; } public float Rotation { get; set; }