aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/mastodon_instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/mastodon_instance.cpp')
-rw-r--r--src/net/mastodon_instance.cpp15
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);
}