blob: d7968f56841d29421222b5f11ee096d280bb32af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#ifndef MASTODONSHARESERVICESTATUS_H
#define MASTODONSHARESERVICESTATUS_H
#include <QtCore/QHash>
#include <QtCore/QObject>
#include <QtCore/QVector>
#include <accountauthenticator.h>
namespace Accounts {
class Account;
class Manager;
}
namespace SignOn {
class Error;
class SessionData;
}
class MastodonShareServiceStatus : public QObject
{
Q_OBJECT
public:
explicit MastodonShareServiceStatus(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;
};
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
};
void setAccountDetailsState(int accountId, AccountDetailsState state);
void signIn(int accountId);
AccountAuthenticator *m_auth;
Accounts::Manager *m_accountManager;
QString m_serviceName;
QVector<AccountDetails> m_accountDetails;
QHash<int, int> m_accountIdToDetailsIdx;
QHash<int, AccountDetailsState> m_accountDetailsState;
};
#endif // MASTODONSHARESERVICESTATUS_H
|