From: Camila Date: Wed, 29 Jun 2022 15:44:59 +0000 (+0200) Subject: Open calendar notifications in the browser. X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~24^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b525de8a97701fffe2347cda585d5deaa29fc7b7;p=nextcloud-desktop.git Open calendar notifications in the browser. Signed-off-by: Camila --- diff --git a/src/gui/tray/activitydata.cpp b/src/gui/tray/activitydata.cpp index f7f943a5c..268874c84 100644 --- a/src/gui/tray/activitydata.cpp +++ b/src/gui/tray/activitydata.cpp @@ -17,6 +17,26 @@ #include "activitydata.h" #include "folderman.h" +namespace { +QUrl stringToUrl(const QUrl &accountUrl, const QString &link) { + auto url = QUrl::fromUserInput(link); + + if (!url.isValid()) { + return {}; + } + + if (url.host().isEmpty()) { + url.setScheme(accountUrl.scheme()); + url.setHost(accountUrl.host()); + } + + if (url.port() == -1) { + url.setPort(accountUrl.port()); + } + + return url; +}; +} namespace OCC { @@ -71,7 +91,7 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP activity._subject = json.value(QStringLiteral("subject")).toString(); activity._message = json.value(QStringLiteral("message")).toString(); activity._file = json.value(QStringLiteral("object_name")).toString(); - activity._link = QUrl(json.value(QStringLiteral("link")).toString()); + activity._link = stringToUrl(account->url(), json.value(QStringLiteral("link")).toString()); activity._dateTime = QDateTime::fromString(json.value(QStringLiteral("datetime")).toString(), Qt::ISODate); activity._icon = json.value(QStringLiteral("icon")).toString(); activity._isCurrentUserFileActivity = activity._objectType == QStringLiteral("files") && activityUser == account->davUser(); @@ -88,13 +108,18 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP for (auto i = parameters.begin(); i != parameters.end(); ++i) { const auto parameterJsonObject = i.value().toObject(); + const auto richParamLink = stringToUrl(account->url(), parameterJsonObject.value(QStringLiteral("link")).toString()); activity._subjectRichParameters[i.key()] = Activity::RichSubjectParameter { parameterJsonObject.value(QStringLiteral("type")).toString(), parameterJsonObject.value(QStringLiteral("id")).toString(), parameterJsonObject.value(QStringLiteral("name")).toString(), parameterJsonObject.contains(QStringLiteral("path")) ? parameterJsonObject.value(QStringLiteral("path")).toString() : QString(), - parameterJsonObject.contains(QStringLiteral("link")) ? QUrl(parameterJsonObject.value(QStringLiteral("link")).toString()) : QUrl(), + richParamLink, }; + + if (activity._objectType == QStringLiteral("calendar") && activity._link.isEmpty()) { + activity._link = richParamLink; + } } auto displayString = activity._subjectRich;