diff --git a/Plugins/Discord/source/Plugin.Common/Delegates/FetchProfilesDelegate.cs b/Plugins/Discord/source/Plugin.Common/Delegates/FetchProfilesDelegate.cs new file mode 100644 index 00000000..32ef73f5 --- /dev/null +++ b/Plugins/Discord/source/Plugin.Common/Delegates/FetchProfilesDelegate.cs @@ -0,0 +1,7 @@ +using ServerManagerTool.Plugin.Common.Lib; +using System.Collections.Generic; + +namespace ServerManagerTool.Plugin.Common.Delegates +{ + public delegate IList FetchProfilesDelegate(); +} diff --git a/Plugins/Discord/source/Plugin.Common/Lib/Profile.cs b/Plugins/Discord/source/Plugin.Common/Lib/Profile.cs new file mode 100644 index 00000000..f99c0a68 --- /dev/null +++ b/Plugins/Discord/source/Plugin.Common/Lib/Profile.cs @@ -0,0 +1,8 @@ +namespace ServerManagerTool.Plugin.Common.Lib +{ + public class Profile + { + public string ProfileName { get; set; } + public string InstallationFolder { get; set; } + } +} diff --git a/Plugins/Discord/source/Plugin.Common/PluginHelper.cs b/Plugins/Discord/source/Plugin.Common/PluginHelper.cs index 254b134d..962f105e 100644 --- a/Plugins/Discord/source/Plugin.Common/PluginHelper.cs +++ b/Plugins/Discord/source/Plugin.Common/PluginHelper.cs @@ -1,4 +1,7 @@ -using System; +using ServerManagerTool.Plugin.Common.Delegates; +using ServerManagerTool.Plugin.Common.Lib; +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; @@ -17,6 +20,8 @@ namespace ServerManagerTool.Plugin.Common private static readonly object _syncLock = new object(); private readonly Object _syncLockProcessAlert = new Object(); + private readonly Object _syncLockFetchProfiles = new Object(); + private FetchProfilesDelegate _fetchProfilesCallback; private bool _disposed; private PluginHelper() @@ -143,6 +148,14 @@ namespace ServerManagerTool.Plugin.Common File.Delete(pluginFile); } + internal IList FetchProfileList() + { + lock (_syncLockFetchProfiles) + { + return _fetchProfilesCallback?.Invoke() ?? new List(); + } + } + internal void LoadPlugin(string pluginFile) { if (string.IsNullOrWhiteSpace(pluginFile)) @@ -251,6 +264,11 @@ namespace ServerManagerTool.Plugin.Common return true; } + internal void SetFetchProfileCallback(FetchProfilesDelegate callback) + { + _fetchProfilesCallback = callback; + } + public void Dispose() { Dispose(true); @@ -265,6 +283,7 @@ namespace ServerManagerTool.Plugin.Common if (disposing) { + _fetchProfilesCallback = null; _instance = null; } diff --git a/Plugins/Discord/source/Plugin.Common/Properties/AssemblyInfo.cs b/Plugins/Discord/source/Plugin.Common/Properties/AssemblyInfo.cs index 8fe9a50c..a2f6d9b1 100644 --- a/Plugins/Discord/source/Plugin.Common/Properties/AssemblyInfo.cs +++ b/Plugins/Discord/source/Plugin.Common/Properties/AssemblyInfo.cs @@ -37,3 +37,4 @@ using System.Runtime.InteropServices; [assembly: InternalsVisibleTo("ARK Server Manager")] [assembly: InternalsVisibleTo("ConanServerManager")] [assembly: InternalsVisibleTo("ServerManager")] +[assembly: InternalsVisibleTo("ServerManager.Plugin.Common.UnitTests")]