Made tags an array of integers instead of strings

This commit is contained in:
CakeAndBanana
2025-10-19 18:53:31 +02:00
parent 477f5aa6e7
commit d72cc207e1
5 changed files with 36 additions and 33 deletions

View File

@@ -49,8 +49,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
private Task<int>? _pruneTestTask;
private Task<int>? _pruneTask;
private int _pruneDays = 14;
private readonly List<string> _allowedTags = ["SFW", "NSFW", "RP", "ERP", "Venues", "Gpose"];
private List<string> _selectedTags = [];
private List<int> _selectedTags = [];
public SyncshellAdminUI(ILogger<SyncshellAdminUI> logger, LightlessMediator mediator, ApiController apiController,
UiSharedService uiSharedService, PairManager pairManager, GroupFullInfoDto groupFullInfo, PerformanceCollectorService performanceCollectorService, LightlessProfileManager lightlessProfileManager, FileDialogManager fileDialogManager)
@@ -321,7 +320,11 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
ImGui.TextUnformatted($"Tags:");
var childFrameLocal = ImGuiHelpers.ScaledVector2(256 + ImGui.GetStyle().WindowPadding.X + ImGui.GetStyle().WindowBorderSize, 200);
foreach (string tag in _allowedTags)
var allCategoryIndexes = Enum.GetValues<ProfileTags>()
.Cast<int>()
.ToList();
foreach(int tag in allCategoryIndexes)
{
using (ImRaii.PushId($"tag-{tag}")) DrawTag(tag);
}
@@ -727,20 +730,22 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
}
inviteTab.Dispose();
}
private void DrawTag(string tag)
private void DrawTag(int tag)
{
var HasTag = _selectedTags.Contains(tag, StringComparer.Ordinal);
if (ImGui.Checkbox(tag, ref HasTag))
var HasTag = _selectedTags.Contains(tag);
var tagName = (ProfileTags)tag;
if (ImGui.Checkbox(tagName.ToString(), ref HasTag))
{
if (HasTag)
{
_selectedTags.Add(tag);
_ = _apiController.GroupSetProfile(new GroupProfileDto(new GroupData(GroupFullInfo.Group.AliasOrGID), Description: null, Tags: ListToString(_selectedTags, ","), PictureBase64: null, IsNsfw: null, IsDisabled: null));
_ = _apiController.GroupSetProfile(new GroupProfileDto(new GroupData(GroupFullInfo.Group.AliasOrGID), Description: null, Tags: _selectedTags.ToArray(), PictureBase64: null, IsNsfw: null, IsDisabled: null));
}
else
{
_selectedTags.Remove(tag);
_ = _apiController.GroupSetProfile(new GroupProfileDto(new GroupData(GroupFullInfo.Group.AliasOrGID), Description: null, Tags: ListToString(_selectedTags, ","), PictureBase64: null, IsNsfw: null, IsDisabled: null));
_ = _apiController.GroupSetProfile(new GroupProfileDto(new GroupData(GroupFullInfo.Group.AliasOrGID), Description: null, Tags: _selectedTags.ToArray(), PictureBase64: null, IsNsfw: null, IsDisabled: null));
}
}
}
@@ -749,26 +754,10 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase
{
if (_profileData != null)
{
_selectedTags = StringToList(_profileData.Tags, ",");
_selectedTags = [.. _profileData.Tags];
}
}
private static string ListToString(List<string> list, string delimiter)
{
if (list == null || list.Count == 0)
return string.Empty;
return string.Join(delimiter, list);
}
public static List<string> StringToList(string input, string delimiter)
{
if (string.IsNullOrEmpty(input))
return [];
return [.. input.Split([delimiter], StringSplitOptions.None)];
}
public override void OnClose()
{
Mediator.Publish(new RemoveWindowMessage(this));