From dcd4cad6926ff41caa2bfe89caacc9ee0601cc02 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Fri, 6 May 2022 15:06:05 -0400
Subject: [PATCH] chatview: fix webengine binding for msg linkify/preview
 mechanism

This was broken in commit 3f88ced, as the webchannel js object can
not be used to invoke Qt signal methods directly. Wrapping with
an emitter method is required.

Change-Id: I8633a5693105efd928fb68f227fdf75c161371fe
Gitlab: #735
---
 resources/misc/previewInterop.js  | 16 ++++++++--------
 src/nowebengine/previewengine.cpp |  8 ++++++++
 src/previewengine.cpp             | 12 ++++++++++++
 src/previewengine.h               |  6 ++++--
 4 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/resources/misc/previewInterop.js b/resources/misc/previewInterop.js
index 16a73661a..552c8b0d8 100644
--- a/resources/misc/previewInterop.js
+++ b/resources/misc/previewInterop.js
@@ -32,13 +32,13 @@ function getPreviewInfo(messageId, url) {
             title = "Twitter. It's what's happening."
         }
 
-        window.jsbridge.infoReady(messageId, {
-                                      'title': title,
-                                      'image': image,
-                                      'description': description,
-                                      'url': url,
-                                      'domain': domain,
-                                  })
+        window.jsbridge.emitInfoReady(messageId, {
+                                          'title': title,
+                                          'image': image,
+                                          'description': description,
+                                          'url': url,
+                                          'domain': domain,
+                                      })
     }).catch(function (err) {
         log("Error occured while fetching document: " + err)
     })
@@ -51,5 +51,5 @@ function parseMessage(messageId, message, showPreview) {
     }
     if (showPreview)
         getPreviewInfo(messageId, links[0].href)
-    window.jsbridge.linkifyReady(messageId, linkifyStr(message))
+    window.jsbridge.emitLinkified(messageId, linkifyStr(message))
 }
diff --git a/src/nowebengine/previewengine.cpp b/src/nowebengine/previewengine.cpp
index b6f165a1f..b74d4531b 100644
--- a/src/nowebengine/previewengine.cpp
+++ b/src/nowebengine/previewengine.cpp
@@ -40,5 +40,13 @@ void
 PreviewEngine::log(const QString&)
 {}
 
+void
+PreviewEngine::emitInfoReady(const QString&, const QVariantMap&)
+{}
+
+void
+PreviewEngine::emitLinkified(const QString&, const QString&)
+{}
+
 #include "moc_previewengine.cpp"
 #include "previewengine.moc"
diff --git a/src/previewengine.cpp b/src/previewengine.cpp
index 84ae79885..9d4f8a852 100644
--- a/src/previewengine.cpp
+++ b/src/previewengine.cpp
@@ -96,5 +96,17 @@ PreviewEngine::log(const QString& str)
     qDebug() << str;
 }
 
+void
+PreviewEngine::emitInfoReady(const QString& messageId, const QVariantMap& info)
+{
+    Q_EMIT infoReady(messageId, info);
+}
+
+void
+PreviewEngine::emitLinkified(const QString& messageId, const QString& linkifiedStr)
+{
+    Q_EMIT linkified(messageId, linkifiedStr);
+}
+
 #include "moc_previewengine.cpp"
 #include "previewengine.moc"
diff --git a/src/previewengine.h b/src/previewengine.h
index c929b21b8..1d37ffc73 100644
--- a/src/previewengine.h
+++ b/src/previewengine.h
@@ -33,10 +33,12 @@ public:
     void parseMessage(const QString& messageId, const QString& msg, bool showPreview);
 
     Q_INVOKABLE void log(const QString& str);
+    Q_INVOKABLE void emitInfoReady(const QString& messageId, const QVariantMap& info);
+    Q_INVOKABLE void emitLinkified(const QString& messageId, const QString& linkifiedStr);
 
 Q_SIGNALS:
-    Q_INVOKABLE void infoReady(const QString& messageId, const QVariantMap& info);
-    Q_INVOKABLE void linkified(const QString& messageId, const QString& linkified);
+    void infoReady(const QString& messageId, const QVariantMap& info);
+    void linkified(const QString& messageId, const QString& linkifiedStr);
 
 private:
     struct Impl;
-- 
GitLab