summaryrefslogtreecommitdiff
path: root/daemon/jskitobjects.cpp
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2014-12-03 01:19:57 +0100
committerJavier <dev.git@javispedro.com>2014-12-03 01:19:57 +0100
commit87de94ea74c68b5ea0a4b125f1745c7449fbe4f1 (patch)
treed1ae6ad7d605bcdb878c7b5ca0a43809c0179654 /daemon/jskitobjects.cpp
parent69822e4dcf541a52e4202d5ff566364fb90e6ec0 (diff)
fix actually setting the configuration, improve xhr support
Diffstat (limited to 'daemon/jskitobjects.cpp')
-rw-r--r--daemon/jskitobjects.cpp67
1 files changed, 62 insertions, 5 deletions
diff --git a/daemon/jskitobjects.cpp b/daemon/jskitobjects.cpp
index a0bc0ba..728daf7 100644
--- a/daemon/jskitobjects.cpp
+++ b/daemon/jskitobjects.cpp
@@ -40,11 +40,27 @@ void JSKitPebble::sendAppMessage(QJSValue message, QJSValue callbackForAck, QJSV
logger()->debug() << "sendAppMessage" << data;
_mgr->_appmsg->send(_appInfo.uuid(), data, [this, callbackForAck]() mutable {
- logger()->debug() << "Invoking ack callback";
- callbackForAck.call();
+ if (callbackForAck.isCallable()) {
+ logger()->debug() << "Invoking ack callback";
+ QJSValue result = callbackForAck.call();
+ if (result.isError()) {
+ logger()->warn() << "error while invoking ACK callback" << callbackForAck.toString() << ":"
+ << result.toString();
+ }
+ } else {
+ logger()->debug() << "Ack callback not callable";
+ }
}, [this, callbackForNack]() mutable {
- logger()->debug() << "Invoking nack callback";
- callbackForNack.call();
+ if (callbackForNack.isCallable()) {
+ logger()->debug() << "Invoking nack callback";
+ QJSValue result = callbackForNack.call();
+ if (result.isError()) {
+ logger()->warn() << "error while invoking NACK callback" << callbackForNack.toString() << ":"
+ << result.toString();
+ }
+ } else {
+ logger()->debug() << "Nack callback not callable";
+ }
});
}
@@ -187,7 +203,10 @@ void JSKitXMLHttpRequest::send(const QString &body)
buffer->setData(body.toUtf8());
logger()->debug() << "sending" << _verb << "to" << _request.url() << "with" << body;
_reply = _net->sendCustomRequest(_request, _verb.toLatin1(), buffer);
- connect(_reply, &QNetworkReply::finished, this, &JSKitXMLHttpRequest::handleReplyFinished);
+ connect(_reply, &QNetworkReply::finished,
+ this, &JSKitXMLHttpRequest::handleReplyFinished);
+ connect(_reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error),
+ this, &JSKitXMLHttpRequest::handleReplyError);
buffer->setParent(_reply); // So that it gets deleted alongside the reply object.
}
@@ -209,6 +228,26 @@ void JSKitXMLHttpRequest::setOnload(const QJSValue &value)
_onload = value;
}
+QJSValue JSKitXMLHttpRequest::ontimeout() const
+{
+ return _ontimeout;
+}
+
+void JSKitXMLHttpRequest::setOntimeout(const QJSValue &value)
+{
+ _ontimeout = value;
+}
+
+QJSValue JSKitXMLHttpRequest::onerror() const
+{
+ return _onerror;
+}
+
+void JSKitXMLHttpRequest::setOnerror(const QJSValue &value)
+{
+ _onerror = value;
+}
+
unsigned short JSKitXMLHttpRequest::readyState() const
{
if (!_reply) {
@@ -259,3 +298,21 @@ void JSKitXMLHttpRequest::handleReplyFinished()
logger()->debug() << "No onload set";
}
}
+
+void JSKitXMLHttpRequest::handleReplyError(QNetworkReply::NetworkError code)
+{
+ if (!_reply) {
+ logger()->info() << "reply error too late";
+ return;
+ }
+
+ logger()->info() << "reply error" << code;
+
+ if (_onerror.isCallable()) {
+ logger()->debug() << "going to call onerror handler:" << _onload.toString();
+ QJSValue result = _onerror.callWithInstance(_mgr->engine()->newQObject(this));
+ if (result.isError()) {
+ logger()->warn() << "JS error on onerror handler:" << result.toString();
+ }
+ }
+}