Fix double href links on username pills

This commit is contained in:
Konstantinos Sideris 2018-09-07 14:52:29 +03:00
parent 896fe069b6
commit a21db789e7
3 changed files with 59 additions and 9 deletions

View file

@ -3,10 +3,13 @@
#include <QApplication>
#include <QDesktopWidget>
#include <QSettings>
#include <QXmlStreamReader>
#include <cmath>
#include <boost/variant.hpp>
#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{"<html>" + body + "</html>"};
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 += "</" + xml.name() + ">";
break;
}
default: {
break;
}
}
}
if (xml.hasError()) {
// qWarning() << "error while parsing xml";
return body;
}
return textString;
}