From 224eb9223f0eb5945631377e19a24ab97b7af399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Sun, 25 Aug 2019 21:54:06 +0200 Subject: Properly re-convert \01ACTION into a /me when reflected to the sender MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/bridge/bridge.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp index 4d4e9de..272b695 100644 --- a/src/bridge/bridge.cpp +++ b/src/bridge/bridge.cpp @@ -235,7 +235,11 @@ void Bridge::send_channel_message(const Iid& iid, const std::string& body, std:: id = utils::gen_uuid(); 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()]) this->xmpp.send_muc_message(std::to_string(iid), irc->get_own_nick(), this->make_xmpp_body(line), this->user_jid + "/" + resource, uuid, id); -- cgit v1.2.3