]> git.sur5r.net Git - minitube/blob - lib/promises/emptypromise.h
New upstream version 3.9.1
[minitube] / lib / promises / emptypromise.h
1 #ifndef EMPTYPROMISE_H
2 #define EMPTYPROMISE_H
3
4 #include <QtCore>
5
6 class EmptyPromise : public QObject {
7     Q_OBJECT
8
9 public:
10     explicit EmptyPromise(QObject *parent = nullptr) : QObject(parent) {
11         connect(this, &EmptyPromise::resolve, this, &QObject::deleteLater);
12         connect(this, &EmptyPromise::reject, this, &QObject::deleteLater);
13     };
14
15     template <typename Functor> EmptyPromise &then(Functor func) {
16         connect(this, &EmptyPromise::resolve, this, func);
17         return *this;
18     }
19     template <typename Functor> EmptyPromise &onFailed(Functor func) {
20         connect(this, &EmptyPromise::reject, this, func);
21         return *this;
22     }
23     template <typename Functor> EmptyPromise &finally(Functor func) {
24         connect(this, &EmptyPromise::destroyed, this, func);
25         return *this;
26     }
27
28 signals:
29     void resolve();
30     void reject(const QString &message);
31 };
32
33 #endif // EMPTYPROMISE_H