#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 {
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();
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;