using Content.Server.Administration;
using Content.Shared.Administration;
using Content.Shared.FeedbackSystem;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Toolshed;
namespace Content.Server.FeedbackSystem;
///
/// Adds, removes, and displays feedback for specified sessions.
///
[ToolshedCommand]
[AdminCommand(AdminFlags.Debug)]
public sealed class FeedbackCommand : ToolshedCommand
{
[Dependency] private readonly ISharedFeedbackManager _feedback = null!;
[CommandImplementation("show")]
public void ExecuteShow([CommandArgument] ICommonSession session)
{
_feedback.OpenForSession(session);
}
[CommandImplementation("show")]
public void ExecuteShow([PipedArgument] IEnumerable sessions)
{
foreach (var session in sessions)
{
_feedback.OpenForSession(session);
}
}
[CommandImplementation("add")]
public void ExecuteAdd([CommandArgument] ICommonSession session, ProtoId protoId)
{
_feedback.SendToSession(session, [protoId]);
}
[CommandImplementation("add")]
public void ExecuteAdd([PipedArgument] IEnumerable sessions, ProtoId protoId)
{
foreach (var session in sessions)
{
_feedback.SendToSession(session, [protoId]);
}
}
[CommandImplementation("remove")]
public void ExecuteRemove([CommandArgument] ICommonSession session, ProtoId protoId)
{
_feedback.SendToSession(session, [protoId], true);
}
[CommandImplementation("remove")]
public void ExecuteRemove([PipedArgument] IEnumerable sessions, ProtoId protoId)
{
foreach (var session in sessions)
{
_feedback.SendToSession(session, [protoId], true);
}
}
}