From cd39d5b1296513280295570df47973d1a5373f9c Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 11 Sep 2023 06:27:13 +0000 Subject: [PATCH] Shutup LinkPreviewDelegate Make sure that the console isn't spammed having `linkpreviewer` undefined in `LinkPreviewDelegate`, even though it shouldn't ever be and I couldn't find any case where it was but my console was still intermittently getting spammed. --- src/linkpreviewer.cpp | 5 +++++ src/linkpreviewer.h | 9 +++++++++ src/qml/Component/Timeline/LinkPreviewDelegate.qml | 8 ++++---- src/qml/Component/Timeline/MessageDelegate.qml | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/linkpreviewer.cpp b/src/linkpreviewer.cpp index cf7b85301..03e8fc96f 100644 --- a/src/linkpreviewer.cpp +++ b/src/linkpreviewer.cpp @@ -93,4 +93,9 @@ void LinkPreviewer::loadUrlPreview() } } +bool LinkPreviewer::empty() const +{ + return m_url.isEmpty(); +} + #include "moc_linkpreviewer.cpp" diff --git a/src/linkpreviewer.h b/src/linkpreviewer.h index 31e8bda62..9edafac3e 100644 --- a/src/linkpreviewer.h +++ b/src/linkpreviewer.h @@ -44,6 +44,13 @@ class LinkPreviewer : public QObject */ Q_PROPERTY(QUrl imageSource READ imageSource NOTIFY imageSourceChanged) + /** + * @brief Whether the there is a link to preview. + * + * A linkPreviwer is empty if the URL is empty. + */ + Q_PROPERTY(bool empty READ empty NOTIFY emptyChanged) + public: explicit LinkPreviewer(QObject *parent = nullptr, const NeoChatRoom *room = nullptr, const QUrl &url = {}); @@ -53,6 +60,7 @@ public: [[nodiscard]] QString title() const; [[nodiscard]] QString description() const; [[nodiscard]] QUrl imageSource() const; + [[nodiscard]] bool empty() const; private: const NeoChatRoom *m_currentRoom = nullptr; @@ -71,5 +79,6 @@ Q_SIGNALS: void descriptionChanged(); void imageSourceChanged(); void urlChanged(); + void emptyChanged(); }; Q_DECLARE_METATYPE(LinkPreviewer *) diff --git a/src/qml/Component/Timeline/LinkPreviewDelegate.qml b/src/qml/Component/Timeline/LinkPreviewDelegate.qml index 9fab299ec..4c649a80d 100644 --- a/src/qml/Component/Timeline/LinkPreviewDelegate.qml +++ b/src/qml/Component/Timeline/LinkPreviewDelegate.qml @@ -23,7 +23,7 @@ Loader { * - description - the description of the URL preview. * - imageSource - a source URL for the preview image. */ - property var linkPreviewer + required property var linkPreviewer /** * @brief Standard height for the link preview. @@ -39,7 +39,7 @@ Loader { property bool indicatorEnabled: false visible: active - sourceComponent: linkPreviewer.loaded ? linkPreviewComponent : loadingComponent + sourceComponent: linkPreviewer && linkPreviewer.loaded ? linkPreviewComponent : loadingComponent Component { id: linkPreviewComponent @@ -61,10 +61,10 @@ Loader { color: Kirigami.Theme.highlightColor } Image { - visible: linkPreviewer.imageSource + visible: root.linkPreviewer.imageSource Layout.maximumHeight: root.defaultHeight Layout.maximumWidth: root.defaultHeight - source: linkPreviewer.imageSource + source: root.linkPreviewer.imageSource fillMode: Image.PreserveAspectFit } ColumnLayout { diff --git a/src/qml/Component/Timeline/MessageDelegate.qml b/src/qml/Component/Timeline/MessageDelegate.qml index 657d542b9..79c1d2b27 100644 --- a/src/qml/Component/Timeline/MessageDelegate.qml +++ b/src/qml/Component/Timeline/MessageDelegate.qml @@ -68,7 +68,7 @@ TimelineContainer { } LinkPreviewDelegate { Layout.fillWidth: true - active: !currentRoom.usesEncryption && currentRoom.urlPreviewEnabled && Config.showLinkPreview && root.showLinkPreview + active: !currentRoom.usesEncryption && currentRoom.urlPreviewEnabled && Config.showLinkPreview && root.showLinkPreview && !root.linkPreview.empty linkPreviewer: root.linkPreview indicatorEnabled: root.isVisibleInTimeline() }