From 69fee48c2335b725e636d7fc31ce14fa7d5395d7 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 28 Jul 2022 17:33:15 +0200 Subject: [PATCH] Allow apps to cache the GetPlugins call on JsonRpc --- libnymea-core/jsonrpc/integrationshandler.cpp | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/libnymea-core/jsonrpc/integrationshandler.cpp b/libnymea-core/jsonrpc/integrationshandler.cpp index eac9f524..e49cc4b3 100644 --- a/libnymea-core/jsonrpc/integrationshandler.cpp +++ b/libnymea-core/jsonrpc/integrationshandler.cpp @@ -485,11 +485,11 @@ IntegrationsHandler::IntegrationsHandler(ThingManager *thingManager, QObject *pa } QList thingClassIds = thingClassesMap.keys(); std::sort(thingClassIds.begin(), thingClassIds.end()); - ThingClasses thingClasses; + QVariantList thingClasses; foreach (const ThingClassId &id, thingClassIds) { - thingClasses.append(thingClassesMap.value(id)); + thingClasses.append(pack(thingClassesMap.value(id))); } - QByteArray hash = QCryptographicHash::hash(QJsonDocument::fromVariant(pack(thingClasses)).toJson(), QCryptographicHash::Md5).toHex(); + QByteArray hash = QCryptographicHash::hash(QJsonDocument::fromVariant(thingClasses).toJson(), QCryptographicHash::Md5).toHex(); m_cacheHashes.insert("GetThingClasses", hash); QHash vendorsMap; @@ -498,12 +498,26 @@ IntegrationsHandler::IntegrationsHandler(ThingManager *thingManager, QObject *pa } QList vendorIds = vendorsMap.keys(); std::sort(vendorIds.begin(), vendorIds.end()); - Vendors vendors; + QVariantList vendors; foreach (const VendorId &id, vendorIds) { - vendors.append(vendorsMap.value(id)); + vendors.append(pack(vendorsMap.value(id))); } - hash = QCryptographicHash::hash(QJsonDocument::fromVariant(pack(vendors)).toJson(), QCryptographicHash::Md5).toHex(); + hash = QCryptographicHash::hash(QJsonDocument::fromVariant(vendors).toJson(), QCryptographicHash::Md5).toHex(); m_cacheHashes.insert("GetVendors", hash); + + QHash pluginsMap; + + foreach (IntegrationPlugin *p, m_thingManager->plugins()) { + pluginsMap.insert(p->pluginId(), p); + } + QList pluginIds = pluginsMap.keys(); + std::sort(pluginIds.begin(), pluginIds.end()); + QVariantList pluginList; + foreach (const PluginId &pluginId, pluginIds) { + pluginList.append(pack(*(pluginsMap.value(pluginId)))); + } + hash = QCryptographicHash::hash(QJsonDocument::fromVariant(pluginList).toJson(), QCryptographicHash::Md5).toHex(); + m_cacheHashes.insert("GetPlugins", hash); }); }