about summary refs log tree commit diff stats
path: root/src/plugins/api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/api.c')
-rw-r--r--src/plugins/api.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/plugins/api.c b/src/plugins/api.c
index 1aedee1f..0de9bab0 100644
--- a/src/plugins/api.c
+++ b/src/plugins/api.c
@@ -40,10 +40,12 @@
 
 #include "log.h"
 #include "event/server_events.h"
+#include "event/client_events.h"
 #include "plugins/callbacks.h"
 #include "plugins/autocompleters.h"
 #include "plugins/themes.h"
 #include "plugins/settings.h"
+#include "plugins/disco.h"
 #include "profanity.h"
 #include "ui/ui.h"
 #include "config/theme.h"
@@ -426,3 +428,21 @@ api_incoming_message(const char *const barejid, const char *const resource, cons
     // TODO handle all states
     sv_ev_activity((char*)barejid, (char*)resource, FALSE);
 }
+
+void
+api_disco_add_feature(char *feature)
+{
+    if (feature == NULL) {
+        return;
+    }
+
+    disco_add_feature(feature);
+    caps_reset_ver();
+
+    // resend presence to update server's disco info data for this client
+    if (jabber_get_connection_status() == JABBER_CONNECTED) {
+        resource_presence_t last_presence = accounts_get_last_presence(jabber_get_account_name());
+        cl_ev_presence_send(last_presence, jabber_get_presence_message(), 0);
+    }
+}
+