configuration rework
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public static class ConfigurationExtensions
|
||||
{
|
||||
|
||||
89
MareSynchronos/MareConfiguration/ConfigurationMigrator.cs
Normal file
89
MareSynchronos/MareConfiguration/ConfigurationMigrator.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
using MareSynchronos.MareConfiguration.Configurations.Obsolete;
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
using MareSynchronos.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class ConfigurationMigrator
|
||||
{
|
||||
private readonly DalamudPluginInterface _pi;
|
||||
|
||||
public ConfigurationMigrator(DalamudPluginInterface pi)
|
||||
{
|
||||
_pi = pi;
|
||||
}
|
||||
|
||||
public void Migrate()
|
||||
{
|
||||
#pragma warning disable CS0618 // ignore Obsolete tag, the point of this migrator is to migrate obsolete configs to new ones
|
||||
if (_pi.GetPluginConfig() is Configuration oldConfig)
|
||||
{
|
||||
Logger.Info("Migrating Configuration from old config style to 1");
|
||||
|
||||
var config = oldConfig.ToMareConfig();
|
||||
File.Move(_pi.ConfigFile.FullName, _pi.ConfigFile.FullName + ".old", overwrite: true);
|
||||
MigrateMareConfigV0ToV1(config);
|
||||
}
|
||||
|
||||
var mareConfig = JsonConvert.DeserializeObject<MareConfigV0>(File.ReadAllText(ConfigurationPath(MareConfigService.ConfigName)))!;
|
||||
|
||||
if (mareConfig.Version == 0)
|
||||
{
|
||||
MigrateMareConfigV0ToV1(mareConfig);
|
||||
}
|
||||
}
|
||||
|
||||
private void MigrateMareConfigV0ToV1(MareConfigV0 mareConfigV0)
|
||||
{
|
||||
Logger.Info("Migrating Configuration from version 0 to 1");
|
||||
if (File.Exists(ConfigurationPath(MareConfigService.ConfigName)))
|
||||
File.Copy(ConfigurationPath(MareConfigService.ConfigName), ConfigurationPath(MareConfigService.ConfigName) + ".migrated." + mareConfigV0.Version + ".bak", true);
|
||||
|
||||
MareConfig mareConfigV1 = mareConfigV0.ToV1();
|
||||
|
||||
var serverConfig = new ServerConfig()
|
||||
{
|
||||
CurrentServer = mareConfigV0.CurrentServer,
|
||||
ServerStorage = mareConfigV0.ServerStorage.ToDictionary(p => p.Key, p => p.Value.ToV1(), StringComparer.Ordinal)
|
||||
};
|
||||
var transientConfig = new TransientConfig()
|
||||
{
|
||||
PlayerPersistentTransientCache = mareConfigV0.PlayerPersistentTransientCache
|
||||
};
|
||||
var tagConfig = new ServerTagConfig()
|
||||
{
|
||||
ServerTagStorage = mareConfigV0.ServerStorage.ToDictionary(p => p.Key, p => new ServerTagStorage()
|
||||
{
|
||||
UidServerPairedUserTags = p.Value.UidServerPairedUserTags.ToDictionary(p => p.Key, p => p.Value.ToList(), StringComparer.Ordinal),
|
||||
OpenPairTags = p.Value.OpenPairTags.ToHashSet(StringComparer.Ordinal),
|
||||
ServerAvailablePairTags = p.Value.ServerAvailablePairTags.ToHashSet(StringComparer.Ordinal)
|
||||
}, StringComparer.Ordinal)
|
||||
};
|
||||
var notesConfig = new UidNotesConfig()
|
||||
{
|
||||
ServerNotes = mareConfigV0.ServerStorage.ToDictionary(p => p.Key, p => new ServerNotesStorage()
|
||||
{
|
||||
GidServerComments = p.Value.GidServerComments,
|
||||
UidServerComments = p.Value.UidServerComments
|
||||
}, StringComparer.Ordinal)
|
||||
};
|
||||
|
||||
SaveConfig(mareConfigV1, ConfigurationPath(MareConfigService.ConfigName));
|
||||
SaveConfig(serverConfig, ConfigurationPath(ServerConfigService.ConfigName));
|
||||
SaveConfig(transientConfig, ConfigurationPath(TransientConfigService.ConfigName));
|
||||
SaveConfig(tagConfig, ConfigurationPath(ServerTagConfigService.ConfigName));
|
||||
SaveConfig(notesConfig, ConfigurationPath(NotesConfigService.ConfigName));
|
||||
}
|
||||
#pragma warning restore CS0618 // ignore Obsolete tag, the point of this migrator is to migrate obsolete configs to new ones
|
||||
|
||||
private string ConfigurationPath(string configName) => Path.Combine(_pi.ConfigDirectory.FullName, configName);
|
||||
|
||||
|
||||
private void SaveConfig(IMareConfiguration config, string path)
|
||||
{
|
||||
File.WriteAllText(path, JsonConvert.SerializeObject(config, Formatting.Indented));
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class ConfigurationService : IDisposable
|
||||
{
|
||||
private const string _configurationName = "Config.json";
|
||||
private string ConfigurationPath => Path.Combine(_pluginInterface.ConfigDirectory.FullName, _configurationName);
|
||||
public string ConfigurationDirectory => _pluginInterface.ConfigDirectory.FullName;
|
||||
private readonly DalamudPluginInterface _pluginInterface;
|
||||
private readonly CancellationTokenSource _periodicCheckCts = new();
|
||||
private DateTime _configLastWriteTime;
|
||||
|
||||
public MareConfig Current { get; private set; }
|
||||
|
||||
public ConfigurationService(DalamudPluginInterface pluginInterface)
|
||||
{
|
||||
_pluginInterface = pluginInterface;
|
||||
|
||||
if (pluginInterface.GetPluginConfig() is Configuration oldConfig)
|
||||
{
|
||||
Current = oldConfig.ToMareConfig();
|
||||
File.Move(pluginInterface.ConfigFile.FullName, pluginInterface.ConfigFile.FullName + ".old", overwrite: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Current = LoadConfig();
|
||||
}
|
||||
|
||||
Save();
|
||||
|
||||
Task.Run(CheckForConfigUpdatesInternal, _periodicCheckCts.Token);
|
||||
}
|
||||
|
||||
private async Task CheckForConfigUpdatesInternal()
|
||||
{
|
||||
while (!_periodicCheckCts.IsCancellationRequested)
|
||||
{
|
||||
var lastWriteTime = GetConfigLastWriteTime();
|
||||
if (lastWriteTime != _configLastWriteTime)
|
||||
{
|
||||
Logger.Debug("Config changed, reloading config");
|
||||
Current = LoadConfig();
|
||||
}
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(5), _periodicCheckCts.Token).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
private MareConfig LoadConfig()
|
||||
{
|
||||
MareConfig config;
|
||||
if (!File.Exists(ConfigurationPath))
|
||||
{
|
||||
config = new();
|
||||
}
|
||||
else
|
||||
{
|
||||
config = JsonConvert.DeserializeObject<MareConfig>(File.ReadAllText(ConfigurationPath)) ?? new MareConfig();
|
||||
}
|
||||
|
||||
_configLastWriteTime = GetConfigLastWriteTime();
|
||||
return config;
|
||||
}
|
||||
|
||||
private DateTime GetConfigLastWriteTime() => new FileInfo(ConfigurationPath).LastWriteTimeUtc;
|
||||
|
||||
public void Save()
|
||||
{
|
||||
File.WriteAllText(ConfigurationPath, JsonConvert.SerializeObject(Current, Formatting.Indented));
|
||||
_configLastWriteTime = new FileInfo(ConfigurationPath).LastWriteTimeUtc;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Logger.Verbose($"Disposing {GetType()}");
|
||||
Save();
|
||||
_periodicCheckCts.Cancel();
|
||||
}
|
||||
}
|
||||
123
MareSynchronos/MareConfiguration/ConfigurationServiceBase.cs
Normal file
123
MareSynchronos/MareConfiguration/ConfigurationServiceBase.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
using MareSynchronos.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public abstract class ConfigurationServiceBase<T> : IDisposable where T : IMareConfiguration
|
||||
{
|
||||
protected abstract string ConfigurationName { get; }
|
||||
public string ConfigurationDirectory => _pluginInterface.ConfigDirectory.FullName;
|
||||
public T Current => _currentConfigInternal.Value;
|
||||
|
||||
protected readonly DalamudPluginInterface _pluginInterface;
|
||||
private readonly CancellationTokenSource _periodicCheckCts = new();
|
||||
private DateTime _configLastWriteTime;
|
||||
private bool _configIsDirty = false;
|
||||
private Lazy<T> _currentConfigInternal;
|
||||
|
||||
protected string ConfigurationPath => Path.Combine(ConfigurationDirectory, ConfigurationName);
|
||||
protected ConfigurationServiceBase(DalamudPluginInterface pluginInterface)
|
||||
{
|
||||
_pluginInterface = pluginInterface;
|
||||
|
||||
Task.Run(CheckForConfigUpdatesInternal, _periodicCheckCts.Token);
|
||||
Task.Run(CheckForDirtyConfigInternal, _periodicCheckCts.Token);
|
||||
|
||||
_currentConfigInternal = LazyConfig();
|
||||
}
|
||||
|
||||
private Lazy<T> LazyConfig()
|
||||
{
|
||||
_configLastWriteTime = GetConfigLastWriteTime();
|
||||
return new Lazy<T>(() => LoadConfig());
|
||||
}
|
||||
private DateTime GetConfigLastWriteTime() => new FileInfo(ConfigurationPath).LastWriteTimeUtc;
|
||||
|
||||
private async Task CheckForConfigUpdatesInternal()
|
||||
{
|
||||
while (!_periodicCheckCts.IsCancellationRequested)
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(5), _periodicCheckCts.Token).ConfigureAwait(false);
|
||||
|
||||
var lastWriteTime = GetConfigLastWriteTime();
|
||||
if (lastWriteTime != _configLastWriteTime)
|
||||
{
|
||||
Logger.Debug($"Config {ConfigurationName} changed, reloading config");
|
||||
_currentConfigInternal = LazyConfig();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CheckForDirtyConfigInternal()
|
||||
{
|
||||
while (!_periodicCheckCts.IsCancellationRequested)
|
||||
{
|
||||
if (_configIsDirty)
|
||||
{
|
||||
SaveDirtyConfig();
|
||||
}
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(1), _periodicCheckCts.Token).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
protected T LoadConfig()
|
||||
{
|
||||
T? config;
|
||||
if (!File.Exists(ConfigurationPath))
|
||||
{
|
||||
config = (T)Activator.CreateInstance(typeof(T))!;
|
||||
Save();
|
||||
}
|
||||
else
|
||||
{
|
||||
config = JsonConvert.DeserializeObject<T>(File.ReadAllText(ConfigurationPath));
|
||||
if (config == null)
|
||||
{
|
||||
config = (T)Activator.CreateInstance(typeof(T))!;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
_configLastWriteTime = GetConfigLastWriteTime();
|
||||
return config;
|
||||
}
|
||||
|
||||
protected void SaveDirtyConfig()
|
||||
{
|
||||
_configIsDirty = false;
|
||||
var existingConfigs = Directory.EnumerateFiles(ConfigurationDirectory, ConfigurationName + ".bak.*").Select(c => new FileInfo(c))
|
||||
.OrderByDescending(c => c.LastWriteTime).ToList();
|
||||
if (existingConfigs.Skip(10).Any())
|
||||
{
|
||||
foreach (var config in existingConfigs.Skip(10).ToList())
|
||||
{
|
||||
config.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Debug("Saving dirty config " + ConfigurationName);
|
||||
|
||||
try
|
||||
{
|
||||
File.Copy(ConfigurationPath, ConfigurationPath + ".bak." + DateTime.Now.ToString("yyyyMMddHHmmss"), true);
|
||||
}
|
||||
catch { }
|
||||
|
||||
File.WriteAllText(ConfigurationPath, JsonConvert.SerializeObject(Current, Formatting.Indented));
|
||||
_configLastWriteTime = new FileInfo(ConfigurationPath).LastWriteTimeUtc;
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
_configIsDirty = true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Logger.Verbose($"Disposing {GetType()}");
|
||||
_periodicCheckCts.Cancel();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
public interface IMareConfiguration
|
||||
{
|
||||
int Version { get; set; }
|
||||
}
|
||||
@@ -1,17 +1,11 @@
|
||||
using Dalamud.Configuration;
|
||||
using MareSynchronos.WebAPI;
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
[Serializable]
|
||||
public class MareConfig : IPluginConfiguration
|
||||
public class MareConfig : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
public Dictionary<string, ServerStorage> ServerStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
{ ApiController.MainServiceUri, new ServerStorage() { ServerName = ApiController.MainServer, ServerUri = ApiController.MainServiceUri } },
|
||||
};
|
||||
public Dictionary<string, HashSet<string>> PlayerPersistentTransientCache { get; set; } = new(StringComparer.Ordinal);
|
||||
public int Version { get; set; } = 1;
|
||||
public bool AcceptedAgreement { get; set; } = false;
|
||||
public string CacheFolder { get; set; } = string.Empty;
|
||||
public double MaxLocalCacheInGiB { get; set; } = 20;
|
||||
@@ -23,12 +17,11 @@ public class MareConfig : IPluginConfiguration
|
||||
public bool OpenGposeImportOnGposeStart { get; set; } = false;
|
||||
public bool ShowTransferWindow { get; set; } = true;
|
||||
public bool OpenPopupOnAdd { get; set; } = true;
|
||||
public string CurrentServer { get; set; } = string.Empty;
|
||||
public bool ShowOnlineNotifications { get; set; } = false;
|
||||
public bool ShowOnlineNotificationsOnlyForIndividualPairs { get; set; } = true;
|
||||
public bool ShowOnlineNotificationsOnlyForNamedPairs { get; set; } = false;
|
||||
public bool ShowCharacterNameInsteadOfNotesForVisible { get; set; } = false;
|
||||
public NotificationLocation InfoNotification { get; set; } = NotificationLocation.Toast;
|
||||
public NotificationLocation WarningNotification { get; set; } = NotificationLocation.Both;
|
||||
public NotificationLocation ErrorNotification { get; set;} = NotificationLocation.Both;
|
||||
}
|
||||
public NotificationLocation ErrorNotification { get; set; } = NotificationLocation.Both;
|
||||
}
|
||||
@@ -1,20 +1,21 @@
|
||||
using Dalamud.Configuration;
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
using MareSynchronos.Utils;
|
||||
using MareSynchronos.WebAPI;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Configurations.Obsolete;
|
||||
|
||||
[Serializable]
|
||||
[Obsolete("Migrated to MareConfig")]
|
||||
[Obsolete("Deprecated, use MareConfig")]
|
||||
public class Configuration : IPluginConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 6;
|
||||
[NonSerialized]
|
||||
private DalamudPluginInterface? _pluginInterface;
|
||||
public Dictionary<string, ServerStorage> ServerStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase)
|
||||
public Dictionary<string, ServerStorageV0> ServerStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
{ ApiController.MainServiceUri, new ServerStorage() { ServerName = ApiController.MainServer, ServerUri = ApiController.MainServiceUri } },
|
||||
{ ApiController.MainServiceUri, new ServerStorageV0() { ServerName = ApiController.MainServer, ServerUri = ApiController.MainServiceUri } },
|
||||
};
|
||||
public bool AcceptedAgreement { get; set; } = false;
|
||||
public string CacheFolder { get; set; } = string.Empty;
|
||||
@@ -73,9 +74,9 @@ public class Configuration : IPluginConfiguration
|
||||
_pluginInterface!.SavePluginConfig(this);
|
||||
}
|
||||
|
||||
public MareConfig ToMareConfig()
|
||||
public MareConfigV0 ToMareConfig()
|
||||
{
|
||||
MareConfig newConfig = new();
|
||||
MareConfigV0 newConfig = new();
|
||||
Logger.Info("Migrating Config to MareConfig");
|
||||
|
||||
newConfig.AcceptedAgreement = AcceptedAgreement;
|
||||
@@ -97,7 +98,7 @@ public class Configuration : IPluginConfiguration
|
||||
Logger.Debug("Migrating " + secret.Key);
|
||||
var apiuri = secret.Key;
|
||||
var secretkey = secret.Value;
|
||||
ServerStorage toAdd = new();
|
||||
ServerStorageV0 toAdd = new();
|
||||
if (string.Equals(apiuri, ApiController.MainServiceUri, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
toAdd.ServerUri = ApiController.MainServiceUri;
|
||||
@@ -0,0 +1,56 @@
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration.Configurations.Obsolete;
|
||||
|
||||
[Serializable]
|
||||
[Obsolete("Deprecated, use MareConfig")]
|
||||
public class MareConfigV0 : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
public Dictionary<string, ServerStorageV0> ServerStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase);
|
||||
public Dictionary<string, HashSet<string>> PlayerPersistentTransientCache { get; set; } = new(StringComparer.Ordinal);
|
||||
public bool AcceptedAgreement { get; set; } = false;
|
||||
public string CacheFolder { get; set; } = string.Empty;
|
||||
public double MaxLocalCacheInGiB { get; set; } = 20;
|
||||
public bool ReverseUserSort { get; set; } = false;
|
||||
public int TimeSpanBetweenScansInSeconds { get; set; } = 30;
|
||||
public bool FileScanPaused { get; set; } = false;
|
||||
public bool InitialScanComplete { get; set; } = false;
|
||||
public bool DisableOptionalPluginWarnings { get; set; } = false;
|
||||
public bool OpenGposeImportOnGposeStart { get; set; } = false;
|
||||
public bool ShowTransferWindow { get; set; } = true;
|
||||
public bool OpenPopupOnAdd { get; set; } = true;
|
||||
public string CurrentServer { get; set; } = string.Empty;
|
||||
public bool ShowOnlineNotifications { get; set; } = false;
|
||||
public bool ShowOnlineNotificationsOnlyForIndividualPairs { get; set; } = true;
|
||||
public bool ShowOnlineNotificationsOnlyForNamedPairs { get; set; } = false;
|
||||
public bool ShowCharacterNameInsteadOfNotesForVisible { get; set; } = false;
|
||||
public NotificationLocation InfoNotification { get; set; } = NotificationLocation.Toast;
|
||||
public NotificationLocation WarningNotification { get; set; } = NotificationLocation.Both;
|
||||
public NotificationLocation ErrorNotification { get; set; } = NotificationLocation.Both;
|
||||
|
||||
public MareConfig ToV1()
|
||||
{
|
||||
return new MareConfig()
|
||||
{
|
||||
AcceptedAgreement = this.AcceptedAgreement,
|
||||
CacheFolder = this.CacheFolder,
|
||||
MaxLocalCacheInGiB = this.MaxLocalCacheInGiB,
|
||||
ReverseUserSort = this.ReverseUserSort,
|
||||
TimeSpanBetweenScansInSeconds = this.TimeSpanBetweenScansInSeconds,
|
||||
FileScanPaused = this.FileScanPaused,
|
||||
InitialScanComplete = this.InitialScanComplete,
|
||||
DisableOptionalPluginWarnings = this.DisableOptionalPluginWarnings,
|
||||
OpenGposeImportOnGposeStart = this.OpenGposeImportOnGposeStart,
|
||||
ShowTransferWindow = this.ShowTransferWindow,
|
||||
OpenPopupOnAdd = this.OpenPopupOnAdd,
|
||||
ShowOnlineNotifications = this.ShowOnlineNotifications,
|
||||
ShowOnlineNotificationsOnlyForIndividualPairs = this.ShowOnlineNotificationsOnlyForIndividualPairs,
|
||||
ShowCharacterNameInsteadOfNotesForVisible = this.ShowCharacterNameInsteadOfNotesForVisible,
|
||||
ShowOnlineNotificationsOnlyForNamedPairs = this.ShowOnlineNotificationsOnlyForNamedPairs,
|
||||
ErrorNotification = this.ErrorNotification,
|
||||
InfoNotification = this.InfoNotification,
|
||||
WarningNotification = this.WarningNotification,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
using MareSynchronos.WebAPI;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
[Serializable]
|
||||
public class ServerConfig : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
|
||||
public Dictionary<string, ServerStorage> ServerStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
{ ApiController.MainServiceUri, new ServerStorage() { ServerName = ApiController.MainServer, ServerUri = ApiController.MainServiceUri } },
|
||||
};
|
||||
public string CurrentServer { get; set; } = string.Empty;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
public class ServerTagConfig : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
public Dictionary<string, ServerTagStorage> ServerTagStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
public class TransientConfig : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
|
||||
public Dictionary<string, HashSet<string>> PlayerPersistentTransientCache { get; set; } = new(StringComparer.Ordinal);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
public class UidNotesConfig : IMareConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
public Dictionary<string, ServerNotesStorage> ServerNotes = new(StringComparer.Ordinal);
|
||||
}
|
||||
12
MareSynchronos/MareConfiguration/MareConfigService.cs
Normal file
12
MareSynchronos/MareConfiguration/MareConfigService.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class MareConfigService : ConfigurationServiceBase<MareConfig>
|
||||
{
|
||||
public const string ConfigName = "config.json";
|
||||
protected override string ConfigurationName => ConfigName;
|
||||
|
||||
public MareConfigService(DalamudPluginInterface pluginInterface) : base(pluginInterface) { }
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
[Serializable]
|
||||
public record Authentication
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
public enum NotificationLocation
|
||||
{
|
||||
@@ -1,7 +1,8 @@
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
[Serializable]
|
||||
public class ServerStorage
|
||||
[Obsolete("Deprecated, use ServerStorage")]
|
||||
public class ServerStorageV0
|
||||
{
|
||||
public string ServerUri { get; set; } = string.Empty;
|
||||
public string ServerName { get; set; } = string.Empty;
|
||||
@@ -13,4 +14,16 @@ public class ServerStorage
|
||||
public HashSet<string> OpenPairTags { get; set; } = new(StringComparer.Ordinal);
|
||||
public Dictionary<int, SecretKey> SecretKeys { get; set; } = new();
|
||||
public bool FullPause { get; set; } = false;
|
||||
|
||||
public ServerStorage ToV1()
|
||||
{
|
||||
return new ServerStorage()
|
||||
{
|
||||
ServerUri = this.ServerUri,
|
||||
ServerName = this.ServerName,
|
||||
Authentications = this.Authentications.ToList(),
|
||||
FullPause = this.FullPause,
|
||||
SecretKeys = this.SecretKeys.ToDictionary(p => p.Key, p => p.Value)
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
[Serializable]
|
||||
public class SecretKey
|
||||
11
MareSynchronos/MareConfiguration/Models/ServerStorage.cs
Normal file
11
MareSynchronos/MareConfiguration/Models/ServerStorage.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
[Serializable]
|
||||
public class ServerStorage
|
||||
{
|
||||
public string ServerUri { get; set; } = string.Empty;
|
||||
public string ServerName { get; set; } = string.Empty;
|
||||
public List<Authentication> Authentications { get; set; } = new();
|
||||
public Dictionary<int, SecretKey> SecretKeys { get; set; } = new();
|
||||
public bool FullPause { get; set; } = false;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
[Serializable]
|
||||
public class ServerTagStorage
|
||||
{
|
||||
public Dictionary<string, List<string>> UidServerPairedUserTags = new(StringComparer.Ordinal);
|
||||
public HashSet<string> ServerAvailablePairTags { get; set; } = new(StringComparer.Ordinal);
|
||||
public HashSet<string> OpenPairTags { get; set; } = new(StringComparer.Ordinal);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace MareSynchronos.MareConfiguration.Models;
|
||||
|
||||
public class ServerNotesStorage
|
||||
{
|
||||
public Dictionary<string, string> UidServerComments { get; set; } = new(StringComparer.Ordinal);
|
||||
public Dictionary<string, string> GidServerComments { get; set; } = new(StringComparer.Ordinal);
|
||||
}
|
||||
11
MareSynchronos/MareConfiguration/NotesConfigService.cs
Normal file
11
MareSynchronos/MareConfiguration/NotesConfigService.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class NotesConfigService : ConfigurationServiceBase<UidNotesConfig>
|
||||
{
|
||||
public const string ConfigName = "notes.json";
|
||||
protected override string ConfigurationName => ConfigName;
|
||||
public NotesConfigService(DalamudPluginInterface pluginInterface) : base(pluginInterface) { }
|
||||
}
|
||||
11
MareSynchronos/MareConfiguration/ServerConfigService.cs
Normal file
11
MareSynchronos/MareConfiguration/ServerConfigService.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class ServerConfigService : ConfigurationServiceBase<ServerConfig>
|
||||
{
|
||||
public const string ConfigName = "server.json";
|
||||
protected override string ConfigurationName => ConfigName;
|
||||
public ServerConfigService(DalamudPluginInterface pluginInterface) : base(pluginInterface) { }
|
||||
}
|
||||
11
MareSynchronos/MareConfiguration/ServerTagConfigService.cs
Normal file
11
MareSynchronos/MareConfiguration/ServerTagConfigService.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class ServerTagConfigService : ConfigurationServiceBase<ServerTagConfig>
|
||||
{
|
||||
public const string ConfigName = "servertags.json";
|
||||
protected override string ConfigurationName => ConfigName;
|
||||
public ServerTagConfigService(DalamudPluginInterface pluginInterface) : base(pluginInterface) { }
|
||||
}
|
||||
11
MareSynchronos/MareConfiguration/TransientConfigService.cs
Normal file
11
MareSynchronos/MareConfiguration/TransientConfigService.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Dalamud.Plugin;
|
||||
using MareSynchronos.MareConfiguration.Configurations;
|
||||
|
||||
namespace MareSynchronos.MareConfiguration;
|
||||
|
||||
public class TransientConfigService : ConfigurationServiceBase<TransientConfig>
|
||||
{
|
||||
public const string ConfigName = "transient.json";
|
||||
protected override string ConfigurationName => ConfigName;
|
||||
public TransientConfigService(DalamudPluginInterface pluginInterface) : base(pluginInterface) { }
|
||||
}
|
||||
Reference in New Issue
Block a user