diff options
Diffstat (limited to 'credentials.h')
| -rw-r--r-- | credentials.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/credentials.h b/credentials.h index 7de90e0..100729b 100644 --- a/credentials.h +++ b/credentials.h @@ -2,25 +2,44 @@ #define CREDENTIALS_H #include "client.h" +#include <QXmppTask.h> +#include <QXmppPromise.h> #include <QObject> #include <QList> #include <QPair> #include <QStringList> +#include <variant> class Credentials : public QObject { Q_OBJECT public: + struct Success {}; + struct Error + { + QString description; + }; + using Pair = QPair<QString, QString>; - QList<Pair> load(); + using PairList = QList<Pair>; + using StoreResult = std::variant<Success, Error>; + using LoadResult = std::variant<QString, Error>; + using PairListResult = std::variant<PairList, Error>; -public Q_SLOTS: - void store(Client *c); + QXmppTask<PairListResult> load(); + QXmppTask<StoreResult> store(Client *c); private: - static void storeUser(const QString &user); - static QString storedUsersList(); - static QStringList storedUsers(); + using Users = std::variant<QStringList, Error>; + + QXmppTask<StoreResult> store(const QString &key, const QString &value); + QXmppTask<StoreResult> store(const QString &user); + QXmppTask<LoadResult> load(const QString &key); + QXmppTask<LoadResult> storedUsersList(); + QXmppTask<Users> storedUsers(); + QXmppTask<PairListResult> load(PairList &pairs, + QStringList::const_iterator &it, + QStringList::const_iterator end); }; #endif |
