diff options
Diffstat (limited to 'src/net/mastodon_instance.cpp')
-rw-r--r-- | src/net/mastodon_instance.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/net/mastodon_instance.cpp b/src/net/mastodon_instance.cpp index 8b88221..17d23ca 100644 --- a/src/net/mastodon_instance.cpp +++ b/src/net/mastodon_instance.cpp @@ -1,6 +1,7 @@ #include "mastodon_instance.h" #include "src/activitypub/appost.h" #include "src/activitypub/apquestion.h" +#include "src/activitypub/fields.h" #include "src/settings_interface.h" #include "src/types.h" @@ -10,7 +11,7 @@ #include <QUrl> #include <QDebug> -APPost* post_from_json(const QJsonObject &status); +APPostPtr post_from_json(const QJsonObject &status); MastodonInstance::MastodonInstance() : instance(SettingsInterface::quick_read_setting<QString>("net/instance/address").toStdString(), SettingsInterface::quick_read_setting<QString>("net/instance/token").toStdString()), connection(instance) { @@ -43,7 +44,7 @@ Instance::OAuth2Step2 MastodonInstance::oauth2_step2(const QString &auth_code) { return {(bool)answer, token}; } -APPost* MastodonInstance::get_post_from_url(const QString &url) { +APPostPtr MastodonInstance::get_post_from_url(const QString &url) { auto answer{connection.get(mastodonpp::API::v2::search, { {"q", QUrl::toPercentEncoding(url).toStdString()}, {"type", "statuses"}, @@ -57,18 +58,18 @@ APPost* MastodonInstance::get_post_from_url(const QString &url) { qDebug() << doc; if (obj.contains("statuses")) { QJsonObject status = obj["statuses"].toArray().first().toObject(); - if (status.isEmpty()) return new APPost({.content="invalid"}); // Invalid + if (status.isEmpty()) return std::make_shared<APPost>(APObjectFields {.content="invalid"}); // Invalid post return post_from_json(status); } } - return new APPost({.content="connection error"}); + return std::make_shared<APPost>(APObjectFields {.content="connection error"}); } // Create a filled APPost object from a Status entity (https://docs.joinmastodon.org/entities/Status/) // We have to return a pointer as else I can't get derived classes of APPost to render properly: the additional methods are ignored. // Furthermore, using pointers removes unecessary copying, even if that can be reduced by return value optimization. -APPost* post_from_json(const QJsonObject &status) { +APPostPtr post_from_json(const QJsonObject &status) { APObjectFields fields; bool is_question = status.contains("poll"); @@ -128,7 +129,7 @@ APPost* post_from_json(const QJsonObject &status) { } if (is_question) - return new APQuestion(fields); + return std::make_shared<APQuestion>(fields); else - return new APPost(fields); + return std::make_shared<APPost>(fields); } |