]> git.sur5r.net Git - minitube/blobdiff - lib/js/jsresult.cpp
New upstream version 3.8
[minitube] / lib / js / jsresult.cpp
diff --git a/lib/js/jsresult.cpp b/lib/js/jsresult.cpp
new file mode 100644 (file)
index 0000000..fc48d6a
--- /dev/null
@@ -0,0 +1,39 @@
+#include "jsresult.h"
+
+QJSValue JSResult::setData(QJSValue value) {
+    qDebug() << "Success" << value.toString();
+
+    if (isSignalConnected(QMetaMethod::fromSignal(&JSResult::json))) {
+        if (value.isObject()) {
+            auto doc = QJsonDocument::fromVariant(value.toVariant());
+            if (doc.isEmpty()) {
+                qDebug() << value.toString();
+                emit error("Cannot parse JSON");
+                return QJSValue();
+            }
+            emit json(doc);
+        }
+    }
+
+    if (isSignalConnected(QMetaMethod::fromSignal(&JSResult::string))) {
+        qDebug() << "Emitting string signal";
+        if (value.isUndefined() || value.isNull())
+            emit string(QString());
+        else
+            emit string(value.toString());
+    }
+
+    // This object has JavascriptOwnership
+    // But it is deleted very late by the JS engine
+    deleteLater();
+
+    return QJSValue();
+}
+
+QJSValue JSResult::setError(QJSValue value) {
+    QString message = value.toString();
+    qWarning() << "Error" << message;
+    qDebug() << value.property("stack").toString().splitRef('\n');
+    emit error(message);
+    return QJSValue();
+}