about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStefan Kropp <stefan.kropp@posteo.de>2022-01-29 06:55:00 +0100
committerMichael Vetter <jubalh@iodoru.org>2022-01-30 18:14:03 +0100
commit7a4cfc14d1210603fe01073d64cf9683a24ebba5 (patch)
tree0f9bf6907514bed14310f0afffeeefc56e298d50
parentb1929068ff581b3474f098866baf32ef851d8c18 (diff)
downloadprofani-tty-7a4cfc14d1210603fe01073d64cf9683a24ebba5.tar.gz
XEP-0107: User Mood - Clean mood
 * Bugfix in mood_autocomplete (wrong parameter)
 * Implemented /mood clean
 ______________________________________
/ Profanity! THE XMPP client with mood \
\ support!                             /
 --------------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
-rw-r--r--src/command/cmd_ac.c3
-rw-r--r--src/command/cmd_defs.c11
-rw-r--r--src/command/cmd_funcs.c5
-rw-r--r--src/xmpp/iq.c17
4 files changed, 22 insertions, 14 deletions
diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c
index d817b2ef..57576967 100644
--- a/src/command/cmd_ac.c
+++ b/src/command/cmd_ac.c
@@ -1063,6 +1063,7 @@ cmd_ac_init(void)
 
     mood_ac = autocomplete_new();
     autocomplete_add(mood_ac, "set");
+    autocomplete_add(mood_ac, "clean");
     mood_type_ac = autocomplete_new();
     autocomplete_add(mood_type_ac, "afraid");
     autocomplete_add(mood_type_ac, "amazed");
@@ -4243,7 +4244,7 @@ _mood_autocomplete(ProfWin* window, const char* const input, gboolean previous)
 {
     char* result = NULL;
 
-    result = autocomplete_param_with_ac(input, "/mood", status_ac, TRUE, previous);
+    result = autocomplete_param_with_ac(input, "/mood", mood_ac, TRUE, previous);
     if (result) {
         return result;
     }
diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c
index ab491f0c..4a51b9dd 100644
--- a/src/command/cmd_defs.c
+++ b/src/command/cmd_defs.c
@@ -2680,20 +2680,23 @@ static struct cmd_t command_defs[] = {
     },
 
     { "/mood",
-      parse_args, 2, 3, NULL,
+      parse_args, 1, 3, NULL,
       CMD_NOSUBFUNCS
       CMD_MAINFUNC(cmd_mood)
       CMD_TAGS(
               CMD_TAG_CHAT)
       CMD_SYN(
-              "/mood set <mood> [text]")
+              "/mood set <mood> [text]",
+              "/mood clean")
       CMD_DESC(
               "Set your mood (XEP-0107). Use tab to switch through predefined moods.")
       CMD_ARGS(
               { "set <mood>", "Setting your mood." },
-              { "<text>", "Additional Text." })
+              { "<text>", "Additional Text." },
+              { "clean", "Clean your user mood." })
       CMD_EXAMPLES(
-              "/mood set happy \"So happy to use Profanity!\"")
+              "/mood set happy \"So happy to use Profanity!\"",
+              "/mood clean")
     },
     // NEXT-COMMAND (search helper)
 };
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index fe5d5e45..14a36ab9 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -9650,7 +9650,7 @@ gboolean
 cmd_mood(ProfWin* window, const char* const command, gchar** args)
 {
     if (g_strcmp0(args[0], "set") == 0) {
-        if(args[1]) {
+        if (args[1]) {
             cons_show("Your mood: %s", args[1]);
             if (args[2]) {
                 publish_user_mood(args[1], args[2]);
@@ -9658,6 +9658,9 @@ cmd_mood(ProfWin* window, const char* const command, gchar** args)
                 publish_user_mood(args[1], args[1]);
             }
         }
+    } else if (g_strcmp0(args[0], "clean") == 0) {
+        cons_show("Cleaning your user mood.");
+        publish_user_mood(NULL, NULL);
     }
     return TRUE;
 }
diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c
index 81eec81e..1cac9096 100644
--- a/src/xmpp/iq.c
+++ b/src/xmpp/iq.c
@@ -2828,17 +2828,18 @@ publish_user_mood(const char* const mood, const char* const text)
     xmpp_stanza_add_child(item, mood_t);
 
     xmpp_stanza_t* x = xmpp_stanza_new(ctx);
-    xmpp_stanza_set_name(x, mood);
-    xmpp_stanza_add_child(mood_t, x);
-
     xmpp_stanza_t* text_t = xmpp_stanza_new(ctx);
-    xmpp_stanza_set_name(text_t, STANZA_NAME_TEXT);
-    xmpp_stanza_add_child(mood_t, text_t);
-
     xmpp_stanza_t* t = xmpp_stanza_new(ctx);
-    xmpp_stanza_set_text(t, text);
-    xmpp_stanza_add_child(text_t, t);
+    if (mood) {
+        xmpp_stanza_set_name(x, mood);
+        xmpp_stanza_add_child(mood_t, x);
 
+        xmpp_stanza_set_name(text_t, STANZA_NAME_TEXT);
+        xmpp_stanza_add_child(mood_t, text_t);
+
+        xmpp_stanza_set_text(t, text);
+        xmpp_stanza_add_child(text_t, t);
+    }
     iq_send_stanza(iq);
 
     xmpp_stanza_release(iq);