about summary refs log tree commit diff stats
path: root/src/event
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-08-28 22:42:09 +0100
committerJames Booth <boothj5@gmail.com>2016-08-28 22:42:09 +0100
commit47a1a62009d411002d4e3b1d6eefd55ba2fe1011 (patch)
tree432597c803a0988198a90659d0bec02a2d4c4bc6 /src/event
parentea98a8b04a0577bd6aacc81f9c98b2b7c4d5cc68 (diff)
downloadprofani-tty-47a1a62009d411002d4e3b1d6eefd55ba2fe1011.tar.gz
Add sv_ev_bookmark_autojoin
Diffstat (limited to 'src/event')
-rw-r--r--src/event/server_events.c22
-rw-r--r--src/event/server_events.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 1b935c6a..d271ec55 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -1079,3 +1079,25 @@ sv_ev_lastactivity_response(const char *const from, const int seconds, const cha
     g_free(date_fmt);
     jid_destroy(jidp);
 }
+
+void
+sv_ev_bookmark_autojoin(Bookmark *bookmark)
+{
+    char *nick = NULL;
+    if (bookmark->nick) {
+        nick = strdup(bookmark->nick);
+    } else {
+        char *account_name = session_get_account_name();
+        ProfAccount *account = accounts_get_account(account_name);
+        nick = strdup(account->muc_nick);
+        account_free(account);
+    }
+
+    log_debug("Autojoin %s with nick=%s", bookmark->barejid, nick);
+    if (!muc_active(bookmark->barejid)) {
+        presence_join_room(bookmark->barejid, nick, bookmark->password);
+        muc_join(bookmark->barejid, nick, bookmark->password, TRUE);
+    }
+
+    free(nick);
+}
diff --git a/src/event/server_events.h b/src/event/server_events.h
index 7f60c3a5..cc67952f 100644
--- a/src/event/server_events.h
+++ b/src/event/server_events.h
@@ -87,5 +87,6 @@ void sv_ev_roster_update(const char *const barejid, const char *const name,
 void sv_ev_roster_received(void);
 int sv_ev_certfail(const char *const errormsg, TLSCertificate *cert);
 void sv_ev_lastactivity_response(const char *const from, const int seconds, const char *const msg);
+void sv_ev_bookmark_autojoin(Bookmark *bookmark);
 
 #endif