From 5ddfab1b7b762cb9a3932e5f85cd436d3eaa1eb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Mon, 25 Oct 2021 14:57:36 -0400
Subject: [PATCH] previewEngine: fix display hyperlink preference

Change-Id: I3c9813e41f6c857d096d9d685d5902d3c4c361cd
---
 resources/misc/previewInterop.js                 | 5 +++--
 src/commoncomponents/TextMessageDelegate.qml     | 3 ++-
 src/messagesadapter.cpp                          | 4 ++--
 src/messagesadapter.h                            | 2 +-
 src/previewengine.cpp                            | 4 ++--
 src/previewengine.h                              | 2 +-
 src/settingsview/components/ChatviewSettings.qml | 1 -
 7 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/resources/misc/previewInterop.js b/resources/misc/previewInterop.js
index 4a8a30291..16a73661a 100644
--- a/resources/misc/previewInterop.js
+++ b/resources/misc/previewInterop.js
@@ -44,11 +44,12 @@ function getPreviewInfo(messageId, url) {
     })
 }
 
-function parseMessage(messageId, message) {
+function parseMessage(messageId, message, showPreview) {
     var links = linkify.find(message)
     if (links.length === 0) {
         return
     }
-    getPreviewInfo(messageId, links[0].href)
+    if (showPreview)
+        getPreviewInfo(messageId, links[0].href)
     window.jsbridge.linkifyReady(messageId, linkifyStr(message))
 }
diff --git a/src/commoncomponents/TextMessageDelegate.qml b/src/commoncomponents/TextMessageDelegate.qml
index 4f94a9818..e9c4e2106 100644
--- a/src/commoncomponents/TextMessageDelegate.qml
+++ b/src/commoncomponents/TextMessageDelegate.qml
@@ -25,6 +25,7 @@ import QtGraphicalEffects 1.15
 import net.jami.Models 1.1
 import net.jami.Adapters 1.1
 import net.jami.Constants 1.1
+import net.jami.Enums 1.1
 
 SBSMessageBase {
     id : root
@@ -170,7 +171,7 @@ SBSMessageBase {
     Behavior on opacity { NumberAnimation { duration: 100 } }
     Component.onCompleted: {
         if (!Linkified) {
-            MessagesAdapter.parseMessageUrls(Id, Body)
+            MessagesAdapter.parseMessageUrls(Id, Body, UtilsAdapter.getAppValue(Settings.DisplayHyperlinkPreviews))
         }
         opacity = 1
     }
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
index 2d0875c5a..efe43d182 100644
--- a/src/messagesadapter.cpp
+++ b/src/messagesadapter.cpp
@@ -407,9 +407,9 @@ MessagesAdapter::onConversationMessagesLoaded(uint32_t, const QString& convId)
 }
 
 void
-MessagesAdapter::parseMessageUrls(const QString& messageId, const QString& msg)
+MessagesAdapter::parseMessageUrls(const QString& messageId, const QString& msg, bool showPreview)
 {
-    previewEngine_->parseMessage(messageId, msg);
+    previewEngine_->parseMessage(messageId, msg, showPreview);
 }
 
 void
diff --git a/src/messagesadapter.h b/src/messagesadapter.h
index aec4f65d9..7e7138ac3 100644
--- a/src/messagesadapter.h
+++ b/src/messagesadapter.h
@@ -105,7 +105,7 @@ protected:
     Q_INVOKABLE QVariantMap getMediaInfo(const QString& msg);
     Q_INVOKABLE bool isRemoteImage(const QString& msg);
     Q_INVOKABLE QString getFormattedTime(const quint64 timestamp);
-    Q_INVOKABLE void parseMessageUrls(const QString& messageId, const QString& msg);
+    Q_INVOKABLE void parseMessageUrls(const QString& messageId, const QString& msg, bool showPreview);
     Q_INVOKABLE void onPaste();
     Q_INVOKABLE QString getStatusString(int status);
     Q_INVOKABLE QVariantMap getTransferStats(const QString& messageId, int);
diff --git a/src/previewengine.cpp b/src/previewengine.cpp
index 439a91c59..5796ff07b 100644
--- a/src/previewengine.cpp
+++ b/src/previewengine.cpp
@@ -70,9 +70,9 @@ PreviewEngine::PreviewEngine(QObject* parent)
 }
 
 void
-PreviewEngine::parseMessage(const QString& messageId, const QString& msg)
+PreviewEngine::parseMessage(const QString& messageId, const QString& msg, bool showPreview)
 {
-    page()->runJavaScript(QString("parseMessage(`%1`, `%2`)").arg(messageId, msg));
+    page()->runJavaScript(QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false"));
 }
 
 void
diff --git a/src/previewengine.h b/src/previewengine.h
index 9b45c6428..8cb7e322f 100644
--- a/src/previewengine.h
+++ b/src/previewengine.h
@@ -52,7 +52,7 @@ public:
     explicit PreviewEngine(QObject* parent = nullptr);
     ~PreviewEngine() = default;
 
-    void parseMessage(const QString& messageId, const QString& msg);
+    void parseMessage(const QString& messageId, const QString& msg, bool showPreview);
 
 Q_SIGNALS:
     void infoReady(const QString& messageId, const QVariantMap& info);
diff --git a/src/settingsview/components/ChatviewSettings.qml b/src/settingsview/components/ChatviewSettings.qml
index 344bb4c5d..660807e66 100644
--- a/src/settingsview/components/ChatviewSettings.qml
+++ b/src/settingsview/components/ChatviewSettings.qml
@@ -75,7 +75,6 @@ ColumnLayout {
 
         onSwitchToggled: {
             UtilsAdapter.setAppValue(Settings.Key.DisplayHyperlinkPreviews, checked)
-            MessagesAdapter.setDisplayLinks()
         }
     }
 }
-- 
GitLab