Open calendar notifications in the browser.

Signed-off-by: Camila <hello@camila.codes>
This commit is contained in:
Camila 2022-06-29 17:44:59 +02:00 committed by Camila (Rebase PR Action)
parent 9cb1609896
commit b525de8a97

View File

@ -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;