]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
adminnotes command cleanup (#36086)
authorErrant <35878406+Errant-4@users.noreply.github.com>
Wed, 26 Mar 2025 05:42:17 +0000 (06:42 +0100)
committerGitHub <noreply@github.com>
Wed, 26 Mar 2025 05:42:17 +0000 (22:42 -0700)
localize adminnotes command, autocomplete

Content.Server/Administration/Commands/OpenAdminNotesCommand.cs
Resources/Locale/en-US/administration/commands/adminnotes.ftl [new file with mode: 0644]

index ae79aa52bbaaba43dc1ec38d4df31517bea0b9df..cbe1e89e19c95551319091a7b6cd20558b2a9a5b 100644 (file)
@@ -1,19 +1,19 @@
-using Content.Server.Administration.Notes;
+using System.Linq;
+using Content.Server.Administration.Notes;
 using Content.Shared.Administration;
+using Robust.Server.Player;
 using Robust.Shared.Console;
 
 namespace Content.Server.Administration.Commands;
 
 [AdminCommand(AdminFlags.ViewNotes)]
-public sealed class OpenAdminNotesCommand : IConsoleCommand
+public sealed class OpenAdminNotesCommand : LocalizedCommands
 {
     public const string CommandName = "adminnotes";
 
-    public string Command => CommandName;
-    public string Description => "Opens the admin notes panel.";
-    public string Help => $"Usage: {Command} <notedPlayerUserId OR notedPlayerUsername>";
+    public override string Command => CommandName;
 
-    public async void Execute(IConsoleShell shell, string argStr, string[] args)
+    public override async void Execute(IConsoleShell shell, string argStr, string[] args)
     {
         if (shell.Player is not { } player)
         {
@@ -33,17 +33,27 @@ public sealed class OpenAdminNotesCommand : IConsoleCommand
 
                 if (dbGuid == null)
                 {
-                    shell.WriteError($"Unable to find {args[0]} netuserid");
+                    shell.WriteError(Loc.GetString("cmd-adminnotes-wrong-target", ("user", args[0])));
                     return;
                 }
 
                 notedPlayer = dbGuid.UserId;
                 break;
             default:
-                shell.WriteError($"Invalid arguments.\n{Help}");
+                shell.WriteError(Loc.GetString("cmd-adminnotes-args-error"));
                 return;
         }
 
         await IoCManager.Resolve<IAdminNotesManager>().OpenEui(player, notedPlayer);
     }
+
+    public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
+    {
+        if (args.Length != 1)
+            return CompletionResult.Empty;
+
+        var playerMgr = IoCManager.Resolve<IPlayerManager>();
+        var options = playerMgr.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray();
+        return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-adminnotes-hint"));
+    }
 }
diff --git a/Resources/Locale/en-US/administration/commands/adminnotes.ftl b/Resources/Locale/en-US/administration/commands/adminnotes.ftl
new file mode 100644 (file)
index 0000000..abeede4
--- /dev/null
@@ -0,0 +1,8 @@
+cmd-adminnotes-desc = Opens the admin notes panel of target player.
+cmd-adminnotes-help = Usage: adminnotes <UserId OR Username>
+
+cmd-adminnotes-wrong-target = Unable to find user '{$user}'.
+cmd-adminnotes-args-error = Invalid arguments.
+                            Usage: adminnotes <UserId OR Username>
+
+cmd-adminnotes-hint = UserId OR Username