From 0f44a2e0f4184add12d7bd0b1964a04e6638c603 Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Tue, 23 Oct 2018 10:32:13 +0200 Subject: [PATCH] re-enable link resolver, but fix the underlying issue in the "link changed" signal. The feature itself still doesn't work for me, but this code does the same thing. only thing that's really different is it also disconnects the signal properly once the TextLayoutElement is deleted --- src/messages/MessageElement.cpp | 3 +-- src/messages/MessageElement.hpp | 3 ++- src/messages/layouts/MessageLayoutElement.cpp | 11 +++++++++++ src/messages/layouts/MessageLayoutElement.hpp | 4 ++++ src/providers/LinkResolver.cpp | 2 -- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/messages/MessageElement.cpp b/src/messages/MessageElement.cpp index fc2f3c54..fc6930f8 100644 --- a/src/messages/MessageElement.cpp +++ b/src/messages/MessageElement.cpp @@ -183,8 +183,7 @@ void TextElement::addToContainer(MessageLayoutContainer &container, // Should update it in MessageLayoutElement too! if (this->getLink().type == Link::Url) { - this->linkChanged.connect( - [this, e]() { e->setLink(this->getLink()); }); + static_cast(e)->listenToLinkChanges(); } return e; }; diff --git a/src/messages/MessageElement.hpp b/src/messages/MessageElement.hpp index e9032f95..cfd4ad3d 100644 --- a/src/messages/MessageElement.hpp +++ b/src/messages/MessageElement.hpp @@ -135,10 +135,11 @@ public: virtual void addToContainer(MessageLayoutContainer &container, MessageElementFlags flags) = 0; + pajlada::Signals::NoArgSignal linkChanged; + protected: MessageElement(MessageElementFlags flags); bool trailingSpace = true; - pajlada::Signals::NoArgSignal linkChanged; private: QString text_; diff --git a/src/messages/layouts/MessageLayoutElement.cpp b/src/messages/layouts/MessageLayoutElement.cpp index 570324fd..aaefca5e 100644 --- a/src/messages/layouts/MessageLayoutElement.cpp +++ b/src/messages/layouts/MessageLayoutElement.cpp @@ -181,6 +181,17 @@ TextLayoutElement::TextLayoutElement(MessageElement &_creator, QString &_text, this->setText(_text); } +void TextLayoutElement::listenToLinkChanges() +{ + this->managedConnections_.emplace_back( + static_cast(this->getCreator()) + .linkChanged.connect([this]() { + // log("Old link: {}", this->getCreator().getLink().value); + // log("This link: {}", this->getLink().value); + this->setLink(this->getCreator().getLink()); // + })); +} + void TextLayoutElement::addCopyTextToString(QString &str, int from, int to) const { diff --git a/src/messages/layouts/MessageLayoutElement.hpp b/src/messages/layouts/MessageLayoutElement.hpp index bdf49043..775328a4 100644 --- a/src/messages/layouts/MessageLayoutElement.hpp +++ b/src/messages/layouts/MessageLayoutElement.hpp @@ -83,6 +83,8 @@ public: const QSize &size, QColor color, FontStyle style, float scale); + void listenToLinkChanges(); + protected: void addCopyTextToString(QString &str, int from = 0, int to = INT_MAX) const override; @@ -96,6 +98,8 @@ private: QColor color; FontStyle style; float scale; + + std::vector managedConnections_; }; // TEXT ICON diff --git a/src/providers/LinkResolver.cpp b/src/providers/LinkResolver.cpp index feab7032..069dba69 100644 --- a/src/providers/LinkResolver.cpp +++ b/src/providers/LinkResolver.cpp @@ -12,8 +12,6 @@ namespace chatterino { void LinkResolver::getLinkInfo( const QString url, std::function successCallback) { - return; - QString requestUrl("https://braize.pajlada.com/chatterino/link_resolver/" + QUrl::toPercentEncoding(url, "", "/:"));