From 4e59eadba3b0d4586a9122e6a825ea030a139c9a Mon Sep 17 00:00:00 2001 From: ConfuSomu Date: Wed, 20 Mar 2024 13:28:19 -0400 Subject: Use smart pointers with AP classes and Instance --- src/net/mastodon_instance.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/net/mastodon_instance.cpp') 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 #include -APPost* post_from_json(const QJsonObject &status); +APPostPtr post_from_json(const QJsonObject &status); MastodonInstance::MastodonInstance() : instance(SettingsInterface::quick_read_setting("net/instance/address").toStdString(), SettingsInterface::quick_read_setting("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(APObjectFields {.content="invalid"}); // Invalid post return post_from_json(status); } } - return new APPost({.content="connection error"}); + return std::make_shared(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(fields); else - return new APPost(fields); + return std::make_shared(fields); } -- cgit v1.2.3-54-g00ecf