configuration rework

This commit is contained in:
rootdarkarchon
2023-02-04 15:53:23 +01:00
parent f389bed4e1
commit 7c97d1994c
50 changed files with 722 additions and 275 deletions

View File

@@ -1,5 +1,6 @@
using MareSynchronos.API.Dto.User;
using MareSynchronos.Managers;
using MareSynchronos.Models;
namespace MareSynchronos.UI.Handlers
{
@@ -17,34 +18,27 @@ namespace MareSynchronos.UI.Handlers
public void AddTag(string tag)
{
GetAvailableTagsForCurrentServer().Add(tag);
_serverConfigurationManager.Save();
_serverConfigurationManager.AddTag(tag);
}
public void RemoveTag(string tag)
{
// First remove the tag from teh available pair tags
GetAvailableTagsForCurrentServer().Remove(tag);
// Then also clean up the tag in all the pairs
GetUidTagDictionaryForCurrentServer().Keys
.ToList()
.ForEach(otherUid => RemoveTagFromPairedUid(otherUid, tag));
_serverConfigurationManager.Save();
_serverConfigurationManager.RemoveTag(tag);
}
public void SetTagOpen(string tag, bool open)
{
if (open)
{
_serverConfigurationManager.CurrentServer!.OpenPairTags.Add(tag);
_serverConfigurationManager.AddOpenPairTag(tag);
}
else
{
_serverConfigurationManager.CurrentServer!.OpenPairTags.Remove(tag);
_serverConfigurationManager.RemoveOpenPairTag(tag);
}
_serverConfigurationManager.Save();
}
/// <summary>
/// Is this tag opened in the paired clients UI?
/// </summary>
@@ -52,73 +46,39 @@ namespace MareSynchronos.UI.Handlers
/// <returns>open true/false</returns>
public bool IsTagOpen(string tag)
{
return _serverConfigurationManager.CurrentServer!.OpenPairTags.Contains(tag);
return _serverConfigurationManager.ContainsOpenPairTag(tag);
}
public List<string> GetAllTagsSorted()
{
return GetAvailableTagsForCurrentServer()
return _serverConfigurationManager.GetServerAvailablePairTags()
.OrderBy(s => s, StringComparer.OrdinalIgnoreCase)
.ToList();
}
public HashSet<string> GetOtherUidsForTag(string tag)
{
return GetUidTagDictionaryForCurrentServer()
.Where(pair => pair.Value.Contains(tag, StringComparer.Ordinal))
.Select(pair => pair.Key)
.ToHashSet(StringComparer.Ordinal);
return _serverConfigurationManager.GetUidsForTag(tag);
}
public void AddTagToPairedUid(UserPairDto pair, string tagName)
{
var tagDictionary = GetUidTagDictionaryForCurrentServer();
var tagsForPair = tagDictionary.GetValueOrDefault(pair.User.UID, new List<string>());
tagsForPair.Add(tagName);
tagDictionary[pair.User.UID] = tagsForPair;
_serverConfigurationManager.Save();
_serverConfigurationManager.AddTagForUid(pair.User.UID, tagName);
}
public void RemoveTagFromPairedUid(UserPairDto pair, string tagName)
{
RemoveTagFromPairedUid(pair.User.UID, tagName);
_serverConfigurationManager.Save();
_serverConfigurationManager.RemoveTagForUid(pair.User.UID, tagName);
}
public bool HasTag(UserPairDto pair, string tagName)
{
var tagsForPair = GetUidTagDictionaryForCurrentServer().GetValueOrDefault(pair.User.UID, new List<string>());
return tagsForPair.Contains(tagName, StringComparer.Ordinal);
return _serverConfigurationManager.ContainsTag(pair.User.UID, tagName);
}
public bool HasAnyTag(UserPairDto pair)
{
return GetUidTagDictionaryForCurrentServer().ContainsKey(pair.User.UID);
}
private void RemoveTagFromPairedUid(string otherUid, string tagName)
{
var tagsForPair = GetUidTagDictionaryForCurrentServer().GetValueOrDefault(otherUid, new List<string>());
tagsForPair.Remove(tagName);
if (!tagsForPair.Any())
{
// No more entries in list -> we can kick out that entry completely
GetUidTagDictionaryForCurrentServer().Remove(otherUid);
}
else
{
GetUidTagDictionaryForCurrentServer()[otherUid] = tagsForPair;
}
}
private Dictionary<string, List<string>> GetUidTagDictionaryForCurrentServer()
{
return _serverConfigurationManager.CurrentServer!.UidServerPairedUserTags;
}
private HashSet<string> GetAvailableTagsForCurrentServer()
{
return _serverConfigurationManager.CurrentServer!.ServerAvailablePairTags;
return _serverConfigurationManager.HasTags(pair.User.UID);
}
}
}