Add blocking options to syncshell ui user menu as well

This commit is contained in:
Loporrit
2025-08-23 09:44:52 +00:00
parent 1768d68df2
commit 7a2d4a5978
2 changed files with 104 additions and 43 deletions

View File

@@ -76,61 +76,105 @@ public class Pair : DisposableMediatorSubscriberBase
private PairHandler? CachedPlayer { get; set; } private PairHandler? CachedPlayer { get; set; }
public void AddContextMenu(IMenuOpenedArgs args) public bool IsWhitelisted
{ {
if (CachedPlayer == null || (args.Target is not MenuTargetDefault target) || target.TargetObjectId != CachedPlayer.PlayerCharacterId || IsPaused) return; get
void Add(string name, Action<IMenuItemClickedArgs>? action)
{ {
args.AddMenuItem(new MenuItem() return _serverConfigurationManager.IsUidWhitelisted(UserData.UID);
{
Name = name,
OnClicked = action,
PrefixColor = 559,
PrefixChar = 'L'
});
} }
bool isBlocked = IsApplicationBlocked; set
bool isBlacklisted = _serverConfigurationManager.IsUidBlacklisted(UserData.UID); {
bool isWhitelisted = _serverConfigurationManager.IsUidWhitelisted(UserData.UID); if (value)
{
Add("Open Profile", _ => Mediator.Publish(new ProfileOpenStandaloneMessage(this))); _serverConfigurationManager.AddWhitelistUid(UserData.UID);
UnholdApplication("Blacklist", skipApplication: true);
if (!isBlocked && !isBlacklisted) ApplyLastReceivedData(forced: true);
Add("Always Block Modded Appearance", _ => { }
_serverConfigurationManager.AddBlacklistUid(UserData.UID); else
HoldApplication("Blacklist", maxValue: 1); {
ApplyLastReceivedData(forced: true);
});
else if (isBlocked && !isWhitelisted)
Add("Always Allow Modded Appearance", _ => {
_serverConfigurationManager.AddWhitelistUid(UserData.UID);
UnholdApplication("Blacklist", skipApplication: true);
ApplyLastReceivedData(forced: true);
});
if (isWhitelisted)
Add("Remove from Whitelist", _ => {
_serverConfigurationManager.RemoveWhitelistUid(UserData.UID); _serverConfigurationManager.RemoveWhitelistUid(UserData.UID);
ApplyLastReceivedData(forced: true); ApplyLastReceivedData(forced: true);
}); }
else if (isBlacklisted) }
Add("Remove from Blacklist", _ => { }
public bool IsBlacklisted
{
get
{
return _serverConfigurationManager.IsUidBlacklisted(UserData.UID);
}
set
{
if (value)
{
_serverConfigurationManager.AddBlacklistUid(UserData.UID);
HoldApplication("Blacklist", maxValue: 1);
ApplyLastReceivedData(forced: true);
}
else
{
_serverConfigurationManager.RemoveBlacklistUid(UserData.UID); _serverConfigurationManager.RemoveBlacklistUid(UserData.UID);
UnholdApplication("Blacklist", skipApplication: true); UnholdApplication("Blacklist", skipApplication: true);
ApplyLastReceivedData(forced: true); ApplyLastReceivedData(forced: true);
}); }
Add("Reapply last data", _ => ApplyLastReceivedData(forced: true));
if (UserPair != null)
{
Add("Change Permissions", _ => Mediator.Publish(new OpenPermissionWindow(this)));
Add("Cycle pause state", _ => Mediator.Publish(new CyclePauseMessage(UserData)));
} }
} }
public void AddContextMenu(IMenuOpenedArgs args)
{
if (CachedPlayer == null || (args.Target is not MenuTargetDefault target) || target.TargetObjectId != CachedPlayer.PlayerCharacterId || IsPaused) return;
void Add(string name, Action<IMenuItemClickedArgs>? action)
{
args.AddMenuItem(new MenuItem()
{
Name = name,
OnClicked = action,
PrefixColor = 559,
PrefixChar = 'L'
});
}
bool isBlocked = IsApplicationBlocked;
bool isBlacklisted = IsBlacklisted;
bool isWhitelisted = IsWhitelisted;
Add("Open Profile", _ => Mediator.Publish(new ProfileOpenStandaloneMessage(this)));
if (!isBlocked && !isBlacklisted)
Add("Always Block Modded Appearance", _ =>
{
IsBlacklisted = true;
});
else if (isBlocked && !isWhitelisted)
Add("Always Allow Modded Appearance", _ =>
{
IsWhitelisted = true;
});
if (isWhitelisted)
Add("Remove from Whitelist", _ =>
{
IsWhitelisted = false;
});
else if (isBlacklisted)
Add("Remove from Blacklist", _ =>
{
IsBlacklisted = false;
});
Add("Reapply last data", _ => ApplyLastReceivedData(forced: true));
if (UserPair != null)
{
Add("Change Permissions", _ => Mediator.Publish(new OpenPermissionWindow(this)));
Add("Cycle pause state", _ => Mediator.Publish(new CyclePauseMessage(UserData)));
}
}
public void ApplyData(OnlineUserCharaDataDto data) public void ApplyData(OnlineUserCharaDataDto data)
{ {
_applicationCts = _applicationCts.CancelRecreate(); _applicationCts = _applicationCts.CancelRecreate();

View File

@@ -344,6 +344,7 @@ public class DrawGroupPair : DrawPairBase
ImGui.CloseCurrentPopup(); ImGui.CloseCurrentPopup();
} }
} }
if (!_pair.IsPaused) if (!_pair.IsPaused)
{ {
if (_uiSharedService.IconTextButton(FontAwesomeIcon.User, "Open Profile")) if (_uiSharedService.IconTextButton(FontAwesomeIcon.User, "Open Profile"))
@@ -352,6 +353,22 @@ public class DrawGroupPair : DrawPairBase
ImGui.CloseCurrentPopup(); ImGui.CloseCurrentPopup();
} }
} }
bool isBlocked = _pair.IsApplicationBlocked;
bool isBlacklisted = _pair.IsBlacklisted;
bool isWhitelisted = _pair.IsWhitelisted;
if (!isBlocked && !isBlacklisted)
{
if (_uiSharedService.IconTextButton(FontAwesomeIcon.EyeSlash, "Block Modded Appearance"))
_pair.IsBlacklisted = true;
}
else if (isBlacklisted)
{
if (_uiSharedService.IconTextButton(FontAwesomeIcon.ThumbsUp, "Remove from Blacklist"))
_pair.IsBlacklisted = false;
}
if (_pair.IsVisible) if (_pair.IsVisible)
{ {
#if DEBUG #if DEBUG