From a21db789e71d375e7b560aed05be9a7b15d49402 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Fri, 7 Sep 2018 14:52:29 +0300 Subject: Fix double href links on username pills --- src/Utils.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/Utils.cpp') diff --git a/src/Utils.cpp b/src/Utils.cpp index 8f7e9992..40039179 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -3,10 +3,13 @@ #include #include #include +#include #include #include +#include "Config.h" + using TimelineEvent = mtx::events::collections::TimelineEvents; QString @@ -276,3 +279,51 @@ utils::humanReadableFingerprint(const QString &ed25519) } return fingerprintList.join(" "); } + +QString +utils::linkifyMessage(const QString &body) +{ + QXmlStreamReader xml{"" + body + ""}; + + QString textString; + while (!xml.atEnd() && !xml.hasError()) { + auto t = xml.readNext(); + + switch (t) { + case QXmlStreamReader::Characters: { + auto text = xml.text().toString(); + text.replace(conf::strings::url_regex, conf::strings::url_html); + + textString += text; + break; + } + case QXmlStreamReader::StartDocument: + case QXmlStreamReader::EndDocument: + break; + case QXmlStreamReader::StartElement: { + if (xml.name() == "html") + break; + + textString += "<" + xml.name() + ">"; + break; + } + case QXmlStreamReader::EndElement: { + if (xml.name() == "html") + break; + + textString += ""; + break; + } + default: { + break; + } + } + } + + if (xml.hasError()) { + // qWarning() << "error while parsing xml"; + return body; + } + + return textString; +} -- cgit 1.5.1