3a53349e33
Both act as the first step of AuthContext.
52 lines
1.6 KiB
Plaintext
52 lines
1.6 KiB
Plaintext
class Helper : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
Helper(MSAFlows * context) : QObject(), context_(context), msg_(QString()) {
|
|
QFile tokenCache("usercache.dat");
|
|
if(tokenCache.open(QIODevice::ReadOnly)) {
|
|
context_->resumeFromState(tokenCache.readAll());
|
|
}
|
|
}
|
|
|
|
public slots:
|
|
void run() {
|
|
connect(context_, &MSAFlows::activityChanged, this, &Helper::onActivityChanged);
|
|
context_->silentSignIn();
|
|
}
|
|
|
|
void onFailed() {
|
|
qDebug() << "Login failed";
|
|
}
|
|
|
|
void onActivityChanged(Katabasis::Activity activity) {
|
|
if(activity == Katabasis::Activity::Idle) {
|
|
switch(context_->validity()) {
|
|
case Katabasis::Validity::None: {
|
|
// account is gone, remove it.
|
|
QFile::remove("usercache.dat");
|
|
}
|
|
break;
|
|
case Katabasis::Validity::Assumed: {
|
|
// this is basically a soft-failed refresh. do nothing.
|
|
}
|
|
break;
|
|
case Katabasis::Validity::Certain: {
|
|
// stuff got refreshed / signed in. Save.
|
|
auto data = context_->saveState();
|
|
QSaveFile tokenCache("usercache.dat");
|
|
if(tokenCache.open(QIODevice::WriteOnly)) {
|
|
tokenCache.write(context_->saveState());
|
|
tokenCache.commit();
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private:
|
|
MSAFlows *context_;
|
|
QString msg_;
|
|
};
|