Copy link to message

fixes #499
This commit is contained in:
Nicolas Werner 2021-04-29 21:46:49 +02:00
parent 7644b6e442
commit f626de0447
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
7 changed files with 100 additions and 0 deletions

View file

@ -9,13 +9,16 @@
#include <type_traits>
#include <QCache>
#include <QClipboard>
#include <QDesktopServices>
#include <QFileDialog>
#include <QGuiApplication>
#include <QMimeDatabase>
#include <QRegularExpression>
#include <QSettings>
#include <QStandardPaths>
#include "Cache_p.h"
#include "ChatPage.h"
#include "Config.h"
#include "EventAccessors.h"
@ -1336,6 +1339,47 @@ TimelineModel::scrollTimerEvent()
}
}
void
TimelineModel::copyLinkToEvent(QString eventId) const
{
QStringList vias;
auto alias = cache::client()->getRoomAliases(room_id_.toStdString());
QString room;
if (alias) {
room = QString::fromStdString(alias->alias);
if (room.isEmpty() && !alias->alt_aliases.empty()) {
room = QString::fromStdString(alias->alt_aliases.front());
}
}
if (room.isEmpty())
room = room_id_;
vias.push_back(QString("via=%1").arg(QString(
QUrl::toPercentEncoding(QString::fromStdString(http::client()->user_id().hostname())))));
auto members = cache::getMembers(room_id_.toStdString(), 0, 100);
for (const auto &m : members) {
if (vias.size() >= 4)
break;
auto user_id =
mtx::identifiers::parse<mtx::identifiers::User>(m.user_id.toStdString());
QString server = QString("via=%1").arg(
QString(QUrl::toPercentEncoding(QString::fromStdString(user_id.hostname()))));
if (!vias.contains(server))
vias.push_back(server);
}
auto link = QString("https://matrix.to/#/%1/%2?%3")
.arg(QString(QUrl::toPercentEncoding(room)),
QString(QUrl::toPercentEncoding(eventId)),
vias.join('&'));
QGuiApplication::clipboard()->setText(link);
}
QString
TimelineModel::formatTypingUsers(const std::vector<QString> &users, QColor bg)
{