summaryrefslogtreecommitdiff
path: root/src/bridge
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2014-02-17 01:43:58 +0100
committerFlorent Le Coz <louiz@louiz.org>2014-02-17 01:43:58 +0100
commitcf9f3a1f2855b358aa9bbc31f234801e9e1efc28 (patch)
treea89ac719df9cd7cbd4fa02e1994ce7eb34180f43 /src/bridge
parentabcf16bc28a5f72d9e7f964a5f2b432f55dfe5b6 (diff)
downloadbiboumi-cf9f3a1f2855b358aa9bbc31f234801e9e1efc28.tar.gz
biboumi-cf9f3a1f2855b358aa9bbc31f234801e9e1efc28.tar.bz2
biboumi-cf9f3a1f2855b358aa9bbc31f234801e9e1efc28.tar.xz
biboumi-cf9f3a1f2855b358aa9bbc31f234801e9e1efc28.zip
Include role and affiliation in the join presence of the nick change process
Diffstat (limited to 'src/bridge')
-rw-r--r--src/bridge/bridge.cpp12
-rw-r--r--src/bridge/bridge.hpp12
2 files changed, 19 insertions, 5 deletions
diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp
index be0d270..6460e6b 100644
--- a/src/bridge/bridge.cpp
+++ b/src/bridge/bridge.cpp
@@ -195,10 +195,18 @@ void Bridge::send_muc_leave(Iid&& iid, std::string&& nick, const std::string& me
this->xmpp->send_muc_leave(std::move(iid.chan) + "%" + std::move(iid.server), std::move(nick), this->make_xmpp_body(message), this->user_jid, self);
}
-void Bridge::send_nick_change(Iid&& iid, const std::string& old_nick, const std::string& new_nick, const bool self)
+void Bridge::send_nick_change(Iid&& iid,
+ const std::string& old_nick,
+ const std::string& new_nick,
+ const char user_mode,
+ const bool self)
{
+ std::string affiliation;
+ std::string role;
+ std::tie(role, affiliation) = get_role_affiliation_from_irc_mode(user_mode);
+
this->xmpp->send_nick_change(std::move(iid.chan) + "%" + std::move(iid.server),
- old_nick, new_nick, this->user_jid, self);
+ old_nick, new_nick, affiliation, role, this->user_jid, self);
}
void Bridge::send_xmpp_message(const std::string& from, const std::string& author, const std::string& msg)
diff --git a/src/bridge/bridge.hpp b/src/bridge/bridge.hpp
index c43b049..b3a5d02 100644
--- a/src/bridge/bridge.hpp
+++ b/src/bridge/bridge.hpp
@@ -84,9 +84,15 @@ public:
void send_muc_leave(Iid&& iid, std::string&& nick, const std::string& message, const bool self);
/**
* Send presences to indicate that an user old_nick (ourself if self ==
- * true) changed his nick to new_nick
- */
- void send_nick_change(Iid&& iid, const std::string& old_nick, const std::string& new_nick, const bool self);
+ * true) changed his nick to new_nick. The user_mode is needed because
+ * the xmpp presence needs ton contain the role and affiliation of the
+ * user.
+ */
+ void send_nick_change(Iid&& iid,
+ const std::string& old_nick,
+ const std::string& new_nick,
+ const char user_mode,
+ const bool self);
void kick_muc_user(Iid&& iid, const std::string& target, const std::string& reason, const std::string& author);
void send_nickname_conflict_error(const Iid& iid, const std::string& nickname);
/**