From d88badaf4d287d70eec471f966383ea0ae9af14f Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Wed, 28 Feb 2018 21:56:46 +0100 Subject: [PATCH] Pebble JS: add transactionId metadata to the appmessage. Removes the errors in Pebble-Casio-WV58DE as reported in #482 --- .../service/devices/pebble/PebbleIoThread.java | 2 +- .../freeyourgadget/gadgetbridge/util/PebbleUtils.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java index c54e1f972..d7afa5043 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java @@ -124,7 +124,7 @@ class PebbleIoThread extends GBDeviceIoThread { jsEvent = "appmessage"; } - final String appMessage = PebbleUtils.parseIncomingAppMessage(message.message, message.appUUID); + final String appMessage = PebbleUtils.parseIncomingAppMessage(message.message, message.appUUID, message.id); LOG.debug("to WEBVIEW: event: " + jsEvent + " message: " + appMessage); WebViewSingleton.invokeWebview(new WebViewSingleton.WebViewRunnable() { @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/PebbleUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/PebbleUtils.java index a5f0a61e4..9e0c71a00 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/PebbleUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/PebbleUtils.java @@ -130,14 +130,14 @@ public class PebbleUtils { return null; } - public static String parseIncomingAppMessage(String msg, UUID uuid) { + public static String parseIncomingAppMessage(String msg, UUID uuid, int transactionId) { JSONObject jsAppMessage = new JSONObject(); JSONObject knownKeys = PebbleUtils.getAppConfigurationKeys(uuid); SparseArray appKeysMap = new SparseArray<>(); if (knownKeys == null || msg == null) { - return "{}"; + msg = "[]"; } String inKey, outKey; @@ -169,6 +169,9 @@ public class PebbleUtils { } } jsAppMessage.put("payload", outgoing); + JSONObject data = new JSONObject(); + data.put("transactionId", transactionId); + jsAppMessage.put("data", data); } catch (Exception e) { LOG.warn("Unable to parse incoming app message", e);