Skip to content

Commit b72ad6e

Browse files
committed
Clean-up subscriptions, ensure downward compatability
1 parent 922e3c0 commit b72ad6e

File tree

4 files changed

+17
-28
lines changed

4 files changed

+17
-28
lines changed

include/api/JsonCallbacks.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class JsonCallbacks : public QObject
3636

3737
///
3838
/// @brief Subscribe to future data updates given by subscription list
39-
/// @param type Array of subscriptionsm
39+
/// @param type Array of subscriptions, an empty array subscribes to all updates
4040
///
4141
QStringList subscribe(const QJsonArray& subscriptions);
4242

@@ -56,7 +56,7 @@ class JsonCallbacks : public QObject
5656

5757
///
5858
/// @brief Unsubscribe to future data updates given by subscription list
59-
/// @param type Array of subscriptions
59+
/// @param type Array of subscriptions, an empty array will unsubcribe all current subscriptions
6060
///
6161
QStringList unsubscribe(const QJsonArray& subscriptions);
6262

libsrc/api/JSONRPC_schema/schema-serverinfo.json

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,11 @@
1616
"minimum": 0,
1717
"maximum": 254
1818
},
19-
"data": {
20-
"type": ["null", "array"],
21-
"properties": {
22-
"subscriptions": {
23-
"type": "array",
24-
"items": {}
25-
}
26-
},
27-
"additionalProperties": false
28-
},
2919
"subscribe" : {
30-
"type" : "array"
20+
"type" : "array",
21+
"items": {
22+
"type" : "string"
23+
}
3124
},
3225
"tan" : {
3326
"type" : "integer"

libsrc/api/JsonAPI.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -719,13 +719,13 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject &message, const JsonApiC
719719
case SubCommand::Subscribe:
720720
case SubCommand::Unsubscribe:
721721
{
722-
const QJsonObject &params = message["data"].toObject();
723-
const QJsonArray &subscriptions = params["subscriptions"].toArray();
724-
if (subscriptions.isEmpty()) {
722+
QJsonValue const subscriptionsValue = message["subscribe"];
723+
if (subscriptionsValue.isUndefined())
724+
{
725725
sendErrorReply("Invalid params", {"No subscriptions provided"}, cmd);
726-
return;
727726
}
728727

728+
const QJsonArray &subscriptions = subscriptionsValue.toArray();
729729
QStringList invaliCommands;
730730
if (cmd.subCommand == SubCommand::Subscribe)
731731
{

libsrc/api/JsonCallbacks.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ bool JsonCallbacks::subscribe(const QString& cmd)
124124
QStringList JsonCallbacks::subscribe(const QJsonArray& subscriptions)
125125
{
126126
QJsonArray subsArr;
127-
if (subscriptions.contains("all"))
127+
if (subscriptions.isEmpty())
128128
{
129129
for (const auto& entry : getCommands(false))
130130
{
@@ -229,7 +229,7 @@ bool JsonCallbacks::unsubscribe(const Subscription::Type cmd)
229229

230230
bool JsonCallbacks::unsubscribe(const QString& cmd)
231231
{
232-
JsonApiSubscription subscription = ApiSubscriptionRegister::getSubscriptionInfo(cmd);
232+
JsonApiSubscription const subscription = ApiSubscriptionRegister::getSubscriptionInfo(cmd);
233233
if (subscription.cmd == Subscription::Unknown)
234234
{
235235
return false;
@@ -240,18 +240,14 @@ bool JsonCallbacks::unsubscribe(const QString& cmd)
240240
QStringList JsonCallbacks::unsubscribe(const QJsonArray& subscriptions)
241241
{
242242
QJsonArray subsArr;
243-
if (subscriptions.contains("all"))
244-
{
245-
for (const auto& entry : getCommands(false))
246-
{
247-
subsArr.append(entry);
248-
}
249-
}
250-
else
243+
if (subscriptions.isEmpty())
251244
{
252-
subsArr = subscriptions;
245+
resetSubscriptions();
246+
return {};
253247
}
254248

249+
subsArr = subscriptions;
250+
255251
QStringList invalidSubscriptions;
256252
for (auto it = subsArr.begin(); it != subsArr.end(); ++it)
257253
{

0 commit comments

Comments
 (0)