Properly re-convert \01ACTION into a /me when reflected to the sender

fix #3382

It still needs to be fixed properly by cleaning the way we send the messages
in all direction etc. And this is ugly because, with just one message, we do
a conversion in one direction, and then re-convert in the other
direction. But at least it works and users will be happy, even if I’m not
entirely satisfied with the code.
This commit is contained in:
louiz’
2019-08-25 21:58:07 +02:00
parent d6460e2828
commit 224eb9223f
+5 -1
View File
@@ -235,7 +235,11 @@ void Bridge::send_channel_message(const Iid& iid, const std::string& body, std::
id = utils::gen_uuid(); id = utils::gen_uuid();
MessageCallback mirror_to_all_resources = [this, iid, uuid, id](const IrcClient* irc, const IrcMessage& message) { MessageCallback mirror_to_all_resources = [this, iid, uuid, id](const IrcClient* irc, const IrcMessage& message) {
const std::string& line = message.arguments[1]; std::string line = message.arguments[1];
// “temporary” workaround for \01ACTION…\01 -> /me messages
if ((line.size() > strlen("\01ACTION\01")) &&
(line.substr(0, 7) == "\01ACTION") && line[line.size() - 1] == '\01')
line = "/me " + line.substr(8, line.size() - 9);
for (const auto& resource: this->resources_in_chan[iid.to_tuple()]) for (const auto& resource: this->resources_in_chan[iid.to_tuple()])
this->xmpp.send_muc_message(std::to_string(iid), irc->get_own_nick(), this->make_xmpp_body(line), this->xmpp.send_muc_message(std::to_string(iid), irc->get_own_nick(), this->make_xmpp_body(line),
this->user_jid + "/" + resource, uuid, id); this->user_jid + "/" + resource, uuid, id);