about summary refs log tree commit diff stats
path: root/src/command/commands.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-10-10 13:35:50 +0100
committerJames Booth <boothj5@gmail.com>2014-10-10 13:35:50 +0100
commit02a4beb6febefa60fb1948a1b173d48793944f59 (patch)
tree14e0dcf1591389c7e4a0d9b1a38f567e8a0a2539 /src/command/commands.c
parent6a2bc79ca6a241982a95b64f4941aceea613366b (diff)
downloadprofani-tty-02a4beb6febefa60fb1948a1b173d48793944f59.tar.gz
Moved /room kick to /kick
Diffstat (limited to 'src/command/commands.c')
-rw-r--r--src/command/commands.c50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 2309b008..a50a778b 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2108,6 +2108,40 @@ cmd_form(gchar **args, struct cmd_help_t help)
 }
 
 gboolean
+cmd_kick(gchar **args, struct cmd_help_t help)
+{
+    jabber_conn_status_t conn_status = jabber_get_connection_status();
+
+    if (conn_status != JABBER_CONNECTED) {
+        cons_show("You are not currently connected.");
+        return TRUE;
+    }
+
+    win_type_t win_type = ui_current_win_type();
+    if (win_type != WIN_MUC) {
+        cons_show("Command '/kick' only applies in chat rooms.");
+        return TRUE;
+    }
+
+    char *room = ui_current_recipient();
+    ProfWin *window = wins_get_by_recipient(room);
+
+    char *nick = args[0];
+    if (nick) {
+        if (muc_roster_contains_nick(room, nick)) {
+            char *reason = args[1];
+            iq_room_kick_occupant(room, nick, reason);
+        } else {
+            win_save_vprint(window, '!', NULL, 0, 0, "", "Occupant does not exist: %s", nick);
+        }
+    } else {
+        cons_show("Usage: %s", help.usage);
+    }
+
+    return TRUE;
+}
+
+gboolean
 cmd_room(gchar **args, struct cmd_help_t help)
 {
     jabber_conn_status_t conn_status = jabber_get_connection_status();
@@ -2127,7 +2161,6 @@ cmd_room(gchar **args, struct cmd_help_t help)
             (g_strcmp0(args[0], "destroy") != 0) &&
             (g_strcmp0(args[0], "config") != 0) &&
             (g_strcmp0(args[0], "subject") != 0) &&
-            (g_strcmp0(args[0], "kick") != 0) &&
             (g_strcmp0(args[0], "ban") != 0) &&
             (g_strcmp0(args[0], "role") != 0) &&
             (g_strcmp0(args[0], "affiliation") != 0) &&
@@ -2181,21 +2214,6 @@ cmd_room(gchar **args, struct cmd_help_t help)
         return TRUE;
     }
 
-    if (g_strcmp0(args[0], "kick") == 0) {
-        char *nick = args[1];
-        if (nick) {
-            if (muc_roster_contains_nick(room, nick)) {
-                char *reason = args[2];
-                iq_room_kick_occupant(room, nick, reason);
-            } else {
-                win_save_vprint(window, '!', NULL, 0, 0, "", "Occupant does not exist: %s", nick);
-            }
-        } else {
-            cons_show("Usage: %s", help.usage);
-        }
-        return TRUE;
-    }
-
     if (g_strcmp0(args[0], "ban") == 0) {
         char *jid = args[1];
         if (jid) {