summaryrefslogtreecommitdiff
path: root/daemon/jskitobjects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/jskitobjects.cpp')
-rw-r--r--daemon/jskitobjects.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/daemon/jskitobjects.cpp b/daemon/jskitobjects.cpp
index b3820b5..1fc0062 100644
--- a/daemon/jskitobjects.cpp
+++ b/daemon/jskitobjects.cpp
@@ -43,7 +43,7 @@ void JSKitPebble::sendAppMessage(QJSValue message, QJSValue callbackForAck, QJSV
_mgr->_appmsg->send(_appInfo.uuid(), data, [this, callbackForAck]() mutable {
if (callbackForAck.isCallable()) {
logger()->debug() << "Invoking ack callback";
- QJSValue result = callbackForAck.call();
+ QJSValue result = callbackForAck.call(QJSValueList({buildAckEventObject()}));
if (result.isError()) {
logger()->warn() << "error while invoking ACK callback" << callbackForAck.toString() << ":"
<< JSKitManager::describeError(result);
@@ -54,7 +54,7 @@ void JSKitPebble::sendAppMessage(QJSValue message, QJSValue callbackForAck, QJSV
}, [this, callbackForNack]() mutable {
if (callbackForNack.isCallable()) {
logger()->debug() << "Invoking nack callback";
- QJSValue result = callbackForNack.call();
+ QJSValue result = callbackForNack.call(QJSValueList({buildAckEventObject()}));
if (result.isError()) {
logger()->warn() << "error while invoking NACK callback" << callbackForNack.toString() << ":"
<< JSKitManager::describeError(result);
@@ -84,6 +84,20 @@ QJSValue JSKitPebble::createXMLHttpRequest()
return _mgr->engine()->newQObject(xhr);
}
+QJSValue JSKitPebble::buildAckEventObject() const
+{
+ QJSEngine *engine = _mgr->engine();
+ QJSValue eventObj = engine->newObject();
+ QJSValue dataObj = engine->newObject();
+
+ // Why do scripts need the real transactionId?
+ // No idea. Just fake it.
+ dataObj.setProperty("transactionId", engine->toScriptValue(0));
+ eventObj.setProperty("data", dataObj);
+
+ return eventObj;
+}
+
void JSKitPebble::invokeCallbacks(const QString &type, const QJSValueList &args)
{
if (!_callbacks.contains(type)) return;
@@ -346,11 +360,12 @@ void JSKitGeolocation::handleError(QGeoPositionInfoSource::Error error)
void JSKitGeolocation::handlePosition(const QGeoPositionInfo &pos)
{
- logger()->debug() << Q_FUNC_INFO;
if (_watches.empty()) {
logger()->warn() << "got position update but no one is watching";
}
+ logger()->debug() << "got position at" << pos.timestamp() << "type" << pos.coordinate().type();
+
QJSValue obj = buildPositionObject(pos);
for (auto it = _watches.begin(); it != _watches.end(); /*no adv*/) {
@@ -507,8 +522,6 @@ QJSValue JSKitGeolocation::buildPositionObject(const QGeoPositionInfo &pos)
obj.setProperty("coords", coords);
obj.setProperty("timestamp", timestamp);
- logger()->debug() << obj.toString();
-
return obj;
}