From a35c9fa159173388d88ef77e1d31f53488aad094 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 3 Apr 2026 22:55:30 +0200 Subject: Generalize for all fediverse accounts --- .../fediverseshareservicestatus.h | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 transferengine-plugins/fediverseshareservicestatus.h (limited to 'transferengine-plugins/fediverseshareservicestatus.h') diff --git a/transferengine-plugins/fediverseshareservicestatus.h b/transferengine-plugins/fediverseshareservicestatus.h new file mode 100644 index 0000000..a82be17 --- /dev/null +++ b/transferengine-plugins/fediverseshareservicestatus.h @@ -0,0 +1,82 @@ +/* + * SPDX-FileCopyrightText: 2013 - 2026 Jolla Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef FEDIVERSESHARESERVICESTATUS_H +#define FEDIVERSESHARESERVICESTATUS_H + +#include +#include +#include + +#include + +namespace Accounts { +class Account; +class Manager; +} + +namespace SignOn { +class Error; +class SessionData; +} + +class FediverseShareServiceStatus : public QObject +{ + Q_OBJECT + +public: + explicit FediverseShareServiceStatus(QObject *parent = 0); + + enum QueryStatusMode { + PassiveMode = 0, + SignInMode = 1 + }; + + void queryStatus(QueryStatusMode mode = SignInMode); + + struct AccountDetails { + int accountId = 0; + QString providerName; + QString displayName; + QString accessToken; + QString apiHost; + QString iconPath; + }; + + AccountDetails details(int index = 0) const; + AccountDetails detailsByIdentifier(int accountIdentifier) const; + int count() const; + + bool setCredentialsNeedUpdate(int accountId, const QString &serviceName); + +Q_SIGNALS: + void serviceReady(); + void serviceError(const QString &message); + +private Q_SLOTS: + void signOnResponse(const SignOn::SessionData &responseData); + void signOnError(const SignOn::Error &error); + +private: + enum AccountDetailsState { + Waiting, + Populated, + Error + }; + + QString authServiceName() const; + void setAccountDetailsState(int accountId, AccountDetailsState state); + void signIn(int accountId); + + AccountAuthenticator *m_auth; + Accounts::Manager *m_accountManager; + QString m_serviceName; + QVector m_accountDetails; + QHash m_accountIdToDetailsIdx; + QHash m_accountDetailsState; +}; + +#endif // FEDIVERSESHARESERVICESTATUS_H -- cgit v1.2.3