summaryrefslogtreecommitdiff
path: root/transferengine-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'transferengine-plugins')
-rw-r--r--transferengine-plugins/mastodonshareplugin/MastodonSharePost.qml4
-rw-r--r--transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp4
-rw-r--r--transferengine-plugins/mastodonshareplugin/mastodonplugininfo.h4
-rw-r--r--transferengine-plugins/mastodonshareplugin/mastodonshareplugin.cpp4
-rw-r--r--transferengine-plugins/mastodonshareplugin/mastodonshareplugin.h4
-rw-r--r--transferengine-plugins/mastodonshareplugin/mastodonshareplugin.pro4
-rw-r--r--transferengine-plugins/mastodonshareservicestatus.cpp23
-rw-r--r--transferengine-plugins/mastodonshareservicestatus.h5
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodonapi.cpp51
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodonapi.h6
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodontransferplugin.cpp4
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodontransferplugin.h4
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodontransferplugin.pro4
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp4
-rw-r--r--transferengine-plugins/mastodontransferplugin/mastodonuploader.h4
-rw-r--r--transferengine-plugins/transferengine-plugins.pro4
16 files changed, 85 insertions, 48 deletions
diff --git a/transferengine-plugins/mastodonshareplugin/MastodonSharePost.qml b/transferengine-plugins/mastodonshareplugin/MastodonSharePost.qml
index d2d950c..d859d96 100644
--- a/transferengine-plugins/mastodonshareplugin/MastodonSharePost.qml
+++ b/transferengine-plugins/mastodonshareplugin/MastodonSharePost.qml
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
import QtQuick 2.6
diff --git a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp
index 99871cb..919d544 100644
--- a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp
+++ b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.cpp
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodonplugininfo.h"
diff --git a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.h b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.h
index 1d74b74..80fe552 100644
--- a/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.h
+++ b/transferengine-plugins/mastodonshareplugin/mastodonplugininfo.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONPLUGININFO_H
diff --git a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.cpp b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.cpp
index 0666080..8c139a2 100644
--- a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.cpp
+++ b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.cpp
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodonshareplugin.h"
diff --git a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.h b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.h
index 9f21919..04d8412 100644
--- a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.h
+++ b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONSHAREPLUGIN_H
diff --git a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.pro b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.pro
index 0dd1443..59fb7e1 100644
--- a/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.pro
+++ b/transferengine-plugins/mastodonshareplugin/mastodonshareplugin.pro
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
TEMPLATE = lib
TARGET = $$qtLibraryTarget(mastodonshareplugin)
CONFIG += plugin
diff --git a/transferengine-plugins/mastodonshareservicestatus.cpp b/transferengine-plugins/mastodonshareservicestatus.cpp
index f3c96ca..2591520 100644
--- a/transferengine-plugins/mastodonshareservicestatus.cpp
+++ b/transferengine-plugins/mastodonshareservicestatus.cpp
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodonshareservicestatus.h"
@@ -27,6 +29,11 @@ MastodonShareServiceStatus::MastodonShareServiceStatus(QObject *parent)
{
}
+QString MastodonShareServiceStatus::authServiceName() const
+{
+ return QStringLiteral("mastodon-microblog");
+}
+
void MastodonShareServiceStatus::signIn(int accountId)
{
Accounts::Account *account = Accounts::Account::fromId(m_accountManager, accountId, this);
@@ -36,9 +43,9 @@ void MastodonShareServiceStatus::signIn(int accountId)
return;
}
- const Accounts::Service service(m_accountManager->service(m_serviceName));
+ const Accounts::Service service(m_accountManager->service(authServiceName()));
if (!service.isValid()) {
- qWarning() << Q_FUNC_INFO << "Invalid auth service" << m_serviceName;
+ qWarning() << Q_FUNC_INFO << "Invalid auth service" << authServiceName();
account->deleteLater();
setAccountDetailsState(accountId, Error);
return;
@@ -123,7 +130,7 @@ void MastodonShareServiceStatus::signOnError(const SignOn::Error &error)
<< error.type() << error.message();
if (accountId > 0 && error.type() == SignOn::Error::UserInteraction) {
- setCredentialsNeedUpdate(accountId, m_serviceName);
+ setCredentialsNeedUpdate(accountId, authServiceName());
}
session->disconnect(this);
@@ -186,7 +193,7 @@ void MastodonShareServiceStatus::queryStatus(QueryStatusMode mode)
bool signInActive = false;
Q_FOREACH (Accounts::AccountId id, m_accountManager->accountList()) {
- Accounts::Account *acc = m_accountManager->account(id);
+ Accounts::Account *acc = Accounts::Account::fromId(m_accountManager, id, this);
if (!acc) {
qWarning() << Q_FUNC_INFO << "Failed to get account for id:" << id;
@@ -206,6 +213,7 @@ void MastodonShareServiceStatus::queryStatus(QueryStatusMode mode)
}
if (!service.isValid() || !serviceFound) {
+ acc->deleteLater();
continue;
}
@@ -214,19 +222,23 @@ void MastodonShareServiceStatus::queryStatus(QueryStatusMode mode)
const bool shareServiceEnabled = acc->enabled();
if (!accountEnabled || !shareServiceEnabled) {
acc->selectService(Accounts::Service());
+ acc->deleteLater();
continue;
}
if (acc->value(QStringLiteral("CredentialsNeedUpdate")).toBool()) {
qWarning() << Q_FUNC_INFO << "Credentials need update for account id:" << id;
acc->selectService(Accounts::Service());
+ acc->deleteLater();
continue;
}
if (!m_accountIdToDetailsIdx.contains(id)) {
AccountDetails details;
details.accountId = id;
+ acc->selectService(Accounts::Service());
details.apiHost = MastodonAuthUtils::normalizeApiHost(acc->value(QStringLiteral("api/Host")).toString());
+ acc->selectService(service);
QUrl apiUrl(details.apiHost);
details.providerName = apiUrl.host();
@@ -256,6 +268,7 @@ void MastodonShareServiceStatus::queryStatus(QueryStatusMode mode)
}
acc->selectService(Accounts::Service());
+ acc->deleteLater();
}
if (!signInActive) {
diff --git a/transferengine-plugins/mastodonshareservicestatus.h b/transferengine-plugins/mastodonshareservicestatus.h
index cf2e1f8..be76c37 100644
--- a/transferengine-plugins/mastodonshareservicestatus.h
+++ b/transferengine-plugins/mastodonshareservicestatus.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONSHARESERVICESTATUS_H
@@ -64,6 +66,7 @@ private:
Error
};
+ QString authServiceName() const;
void setAccountDetailsState(int accountId, AccountDetailsState state);
void signIn(int accountId);
diff --git a/transferengine-plugins/mastodontransferplugin/mastodonapi.cpp b/transferengine-plugins/mastodontransferplugin/mastodonapi.cpp
index baf9dd8..fa973d0 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodonapi.cpp
+++ b/transferengine-plugins/mastodontransferplugin/mastodonapi.cpp
@@ -1,8 +1,11 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodonapi.h"
+#include "mastodonauthutils.h"
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
@@ -18,6 +21,7 @@
MastodonApi::MastodonApi(QNetworkAccessManager *qnam, QObject *parent)
: QObject(parent)
+ , m_cancelRequested(false)
, m_qnam(qnam)
{
}
@@ -26,33 +30,6 @@ MastodonApi::~MastodonApi()
{
}
-QString MastodonApi::normalizeApiHost(const QString &rawHost)
-{
- QString host = rawHost.trimmed();
- if (host.isEmpty()) {
- host = QStringLiteral("https://mastodon.social");
- }
-
- if (!host.startsWith(QLatin1String("https://"))
- && !host.startsWith(QLatin1String("http://"))) {
- host.prepend(QStringLiteral("https://"));
- }
-
- QUrl url(host);
- if (!url.isValid() || url.host().isEmpty()) {
- return QStringLiteral("https://mastodon.social");
- }
-
- QString normalized = QString::fromLatin1(url.toEncoded(QUrl::RemovePath
- | QUrl::RemoveQuery
- | QUrl::RemoveFragment));
- if (normalized.endsWith(QLatin1Char('/'))) {
- normalized.chop(1);
- }
-
- return normalized;
-}
-
bool MastodonApi::uploadImage(const QString &filePath,
const QString &statusText,
const QString &mimeType,
@@ -65,7 +42,8 @@ bool MastodonApi::uploadImage(const QString &filePath,
return false;
}
- m_apiHost = normalizeApiHost(apiHost);
+ m_cancelRequested = false;
+ m_apiHost = MastodonAuthUtils::normalizeApiHost(apiHost);
m_accessToken = accessToken;
m_statusText = statusText;
@@ -116,7 +94,8 @@ bool MastodonApi::postStatus(const QString &statusText,
const QString &apiHost,
const QString &accessToken)
{
- m_apiHost = normalizeApiHost(apiHost);
+ m_cancelRequested = false;
+ m_apiHost = MastodonAuthUtils::normalizeApiHost(apiHost);
m_accessToken = accessToken;
m_statusText = statusText;
@@ -172,11 +151,11 @@ void MastodonApi::cancelUpload()
return;
}
+ m_cancelRequested = true;
const QList<QNetworkReply*> replies = m_replies.keys();
Q_FOREACH (QNetworkReply *reply, replies) {
reply->abort();
}
- m_replies.clear();
}
void MastodonApi::replyError(QNetworkReply::NetworkError error)
@@ -205,6 +184,14 @@ void MastodonApi::finished()
reply->deleteLater();
+ if (m_cancelRequested && error == QNetworkReply::OperationCanceledError) {
+ if (m_replies.isEmpty()) {
+ m_cancelRequested = false;
+ emit transferCanceled();
+ }
+ return;
+ }
+
if (apiCall == UPLOAD_MEDIA) {
if (error != QNetworkReply::NoError || httpCode < 200 || httpCode >= 300) {
finishTransfer(error == QNetworkReply::NoError ? QNetworkReply::UnknownNetworkError : error,
@@ -241,6 +228,8 @@ void MastodonApi::finished()
void MastodonApi::finishTransfer(QNetworkReply::NetworkError error, int httpCode, const QByteArray &data)
{
+ m_cancelRequested = false;
+
if (httpCode == 401) {
emit credentialsExpired();
}
diff --git a/transferengine-plugins/mastodontransferplugin/mastodonapi.h b/transferengine-plugins/mastodontransferplugin/mastodonapi.h
index 4ac3d80..df4c87a 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodonapi.h
+++ b/transferengine-plugins/mastodontransferplugin/mastodonapi.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONAPI_H
@@ -49,11 +51,11 @@ private Q_SLOTS:
void uploadProgress(qint64 received, qint64 total);
private:
- static QString normalizeApiHost(const QString &rawHost);
bool postStatusInternal(const QString &mediaId);
void finishTransfer(QNetworkReply::NetworkError error, int httpCode, const QByteArray &data);
QMap<QNetworkReply*, API_CALL> m_replies;
+ bool m_cancelRequested;
QNetworkAccessManager *m_qnam;
QString m_accessToken;
QString m_apiHost;
diff --git a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.cpp b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.cpp
index 064388c..a843df2 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.cpp
+++ b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.cpp
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodontransferplugin.h"
diff --git a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.h b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.h
index 865faff..4d3baaf 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.h
+++ b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONTRANSFERPLUGIN_H
diff --git a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.pro b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.pro
index 8782156..422a889 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.pro
+++ b/transferengine-plugins/mastodontransferplugin/mastodontransferplugin.pro
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
TEMPLATE = lib
TARGET = $$qtLibraryTarget(mastodontransferplugin)
CONFIG += plugin
diff --git a/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp b/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp
index 6e0a6ea..7b87823 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp
+++ b/transferengine-plugins/mastodontransferplugin/mastodonuploader.cpp
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#include "mastodonuploader.h"
diff --git a/transferengine-plugins/mastodontransferplugin/mastodonuploader.h b/transferengine-plugins/mastodontransferplugin/mastodonuploader.h
index f773c23..72d9689 100644
--- a/transferengine-plugins/mastodontransferplugin/mastodonuploader.h
+++ b/transferengine-plugins/mastodontransferplugin/mastodonuploader.h
@@ -1,5 +1,7 @@
/*
- * Copyright (C) 2013-2026 Jolla Ltd.
+ * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef MASTODONUPLOADER_H
diff --git a/transferengine-plugins/transferengine-plugins.pro b/transferengine-plugins/transferengine-plugins.pro
index fef3cf5..e2503a3 100644
--- a/transferengine-plugins/transferengine-plugins.pro
+++ b/transferengine-plugins/transferengine-plugins.pro
@@ -1,2 +1,6 @@
+# SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
TEMPLATE = subdirs
SUBDIRS = mastodonshareplugin mastodontransferplugin