mirror of https://github.com/nextcloud/desktop
to store subjectRichParameters use a QVariantMap that is qml friendly
will make it much easier to access fom qml in order to use the data inside to improve activity list items Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
parent
bc9b7a05f4
commit
10f9ef5cd5
|
@ -109,13 +109,13 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP
|
|||
const auto parameterJsonObject = i.value().toObject();
|
||||
|
||||
const auto richParamLink = stringToUrl(account->url(), parameterJsonObject.value(QStringLiteral("link")).toString());
|
||||
activity._subjectRichParameters[i.key()] = Activity::RichSubjectParameter {
|
||||
activity._subjectRichParameters[i.key()] = QVariant::fromValue(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(),
|
||||
richParamLink,
|
||||
};
|
||||
});
|
||||
|
||||
if (activity._objectType == QStringLiteral("calendar") && activity._link.isEmpty()) {
|
||||
activity._link = richParamLink;
|
||||
|
@ -131,7 +131,7 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP
|
|||
word.remove(subjectRichParameterBracesRe);
|
||||
|
||||
Q_ASSERT(activity._subjectRichParameters.contains(word));
|
||||
displayString = displayString.replace(match.captured(1), activity._subjectRichParameters[word].name);
|
||||
displayString = displayString.replace(match.captured(1), activity._subjectRichParameters[word].value<Activity::RichSubjectParameter>().name);
|
||||
}
|
||||
|
||||
activity._subjectDisplay = displayString;
|
||||
|
|
|
@ -15,14 +15,15 @@
|
|||
#ifndef ACTIVITYDATA_H
|
||||
#define ACTIVITYDATA_H
|
||||
|
||||
#include <QtCore>
|
||||
#include <QIcon>
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "syncfileitem.h"
|
||||
#include "folder.h"
|
||||
#include "account.h"
|
||||
|
||||
#include <QtCore>
|
||||
#include <QIcon>
|
||||
#include <QJsonObject>
|
||||
#include <QVariantMap>
|
||||
|
||||
namespace OCC {
|
||||
/**
|
||||
* @brief The ActivityLink class describes actions of an activity
|
||||
|
@ -131,7 +132,7 @@ public:
|
|||
QString _objectName;
|
||||
QString _subject;
|
||||
QString _subjectRich;
|
||||
QHash<QString, RichSubjectParameter> _subjectRichParameters;
|
||||
QVariantMap _subjectRichParameters;
|
||||
QString _subjectDisplay;
|
||||
QString _message;
|
||||
QString _folder;
|
||||
|
@ -180,6 +181,7 @@ using ActivityList = QList<Activity>;
|
|||
Q_DECLARE_METATYPE(OCC::Activity)
|
||||
Q_DECLARE_METATYPE(OCC::ActivityList)
|
||||
Q_DECLARE_METATYPE(OCC::Activity::Type)
|
||||
Q_DECLARE_METATYPE(OCC::Activity::RichSubjectParameter)
|
||||
Q_DECLARE_METATYPE(OCC::ActivityLink)
|
||||
Q_DECLARE_METATYPE(OCC::PreviewData)
|
||||
|
||||
|
|
|
@ -94,13 +94,13 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j
|
|||
const auto richParamsKeys = richParams.keys();
|
||||
for(const auto &key : richParamsKeys) {
|
||||
const auto parameterJsonObject = richParams.value(key).toObject();
|
||||
a._subjectRichParameters.insert(key, Activity::RichSubjectParameter{
|
||||
a._subjectRichParameters.insert(key, QVariant::fromValue(Activity::RichSubjectParameter{
|
||||
parameterJsonObject.value(QStringLiteral("type")).toString(),
|
||||
parameterJsonObject.value(QStringLiteral("id")).toString(),
|
||||
parameterJsonObject.value(QStringLiteral("name")).toString(),
|
||||
QString(),
|
||||
QUrl()
|
||||
});
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j
|
|||
al._primary = false;
|
||||
}
|
||||
|
||||
a._talkNotificationData.userAvatar = ai->account()->url().toString() + QStringLiteral("/index.php/avatar/") + a._subjectRichParameters["user"].id + QStringLiteral("/128");
|
||||
a._talkNotificationData.userAvatar = ai->account()->url().toString() + QStringLiteral("/index.php/avatar/") + a._subjectRichParameters["user"].value<Activity::RichSubjectParameter>().id + QStringLiteral("/128");
|
||||
}
|
||||
|
||||
// We want to serve incoming call dialogs to the user for calls that
|
||||
|
|
|
@ -321,7 +321,7 @@ private slots:
|
|||
QCOMPARE(activity._link, eventLink);
|
||||
QCOMPARE(activity._subjectDisplay, QStringLiteral("%1 updated event %2 in calendar %3").arg(account->displayName(),
|
||||
eventName,
|
||||
richParams[calendarC].name));
|
||||
richParams[calendarC].value<OCC::Activity::RichSubjectParameter>().name));
|
||||
QCOMPARE(activity._icon, iconExpected);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue