Add feedback on login errors
There was no feedback on any login errors when a user provided a wrong url, username, password or a disabled API. This commit adds feedback to the user in this cases. Fixes #15
This commit is contained in:
parent
4bb5610f7f
commit
f025ad4d2a
3 changed files with 40 additions and 10 deletions
16
qml/main.qml
16
qml/main.qml
|
@ -21,6 +21,7 @@ import QtQuick 2.3
|
||||||
import QtQuick.Controls 1.3
|
import QtQuick.Controls 1.3
|
||||||
import QtQuick.Window 2.0
|
import QtQuick.Window 2.0
|
||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
|
import QtQuick.Dialogs 1.1
|
||||||
import Qt.labs.settings 1.0
|
import Qt.labs.settings 1.0
|
||||||
import TTRSS 1.0
|
import TTRSS 1.0
|
||||||
|
|
||||||
|
@ -210,14 +211,27 @@ ApplicationWindow {
|
||||||
visible: !serverLogin.loggedIn()
|
visible: !serverLogin.loggedIn()
|
||||||
|
|
||||||
function login() {
|
function login() {
|
||||||
console.log("FOO")
|
|
||||||
serverLogin.login(serverUrl, userName, password)
|
serverLogin.login(serverUrl, userName, password)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageDialog {
|
||||||
|
id: loginErrorAlert
|
||||||
|
title: "A login error occured"
|
||||||
|
text: serverLogin.loginError
|
||||||
|
onAccepted: visible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerLogin {
|
ServerLogin {
|
||||||
id: serverLogin
|
id: serverLogin
|
||||||
onSessionIdChanged: app.loggedIn()
|
onSessionIdChanged: app.loggedIn()
|
||||||
|
onLoginErrorChanged: {
|
||||||
|
console.log("loginError:", loginError)
|
||||||
|
if(loginError.length > 0) {
|
||||||
|
loginErrorAlert.visible = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Server {
|
Server {
|
||||||
|
|
|
@ -88,10 +88,18 @@ void TinyTinyRSSLogin::reply()
|
||||||
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
||||||
|
|
||||||
if (reply) {
|
if (reply) {
|
||||||
|
|
||||||
if (reply->error() == QNetworkReply::NoError) {
|
if (reply->error() == QNetworkReply::NoError) {
|
||||||
|
|
||||||
QString jsonString = QString(reply->readAll());
|
QString jsonString = QString(reply->readAll());
|
||||||
QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8());
|
QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8());
|
||||||
|
if(json.object().value("content").toObject().value("error").toString().length() > 0) {
|
||||||
|
|
||||||
|
mLoginError = json.object().value("content").toObject().value("error").toString();
|
||||||
|
qWarning() << mLoginError;
|
||||||
|
emit loginErrorChanged(mLoginError);
|
||||||
|
|
||||||
|
} else {
|
||||||
mSessionId = json.object().value("content").toObject().value("session_id").toString();
|
mSessionId = json.object().value("content").toObject().value("session_id").toString();
|
||||||
|
|
||||||
emit sessionIdChanged(mSessionId);
|
emit sessionIdChanged(mSessionId);
|
||||||
|
@ -100,11 +108,15 @@ void TinyTinyRSSLogin::reply()
|
||||||
settings.setValue("sessionId", mSessionId);
|
settings.setValue("sessionId", mSessionId);
|
||||||
settings.setValue("serverUrl", mServerUrl);
|
settings.setValue("serverUrl", mServerUrl);
|
||||||
settings.sync();
|
settings.sync();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
mLoginError = "HTTP error: "
|
||||||
//do some error management
|
+ reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString()
|
||||||
qWarning() << "HTTP error: " << httpStatus << " :: " << reply->error();
|
+ " :: "
|
||||||
|
+ reply->errorString();
|
||||||
|
qWarning() << mLoginError;
|
||||||
|
|
||||||
|
emit loginErrorChanged(mLoginError);
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,14 @@ class TinyTinyRSSLogin : public QObject
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QString sessionId READ sessionId NOTIFY sessionIdChanged)
|
Q_PROPERTY(QString sessionId READ sessionId NOTIFY sessionIdChanged)
|
||||||
Q_PROPERTY(QUrl serverUrl READ serverUrl)
|
Q_PROPERTY(QUrl serverUrl READ serverUrl)
|
||||||
|
Q_PROPERTY(QString loginError READ loginError NOTIFY loginErrorChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TinyTinyRSSLogin(QObject *parent = 0);
|
TinyTinyRSSLogin(QObject *parent = 0);
|
||||||
~TinyTinyRSSLogin();
|
~TinyTinyRSSLogin();
|
||||||
QString sessionId() const { return mSessionId; }
|
QString sessionId() const { return mSessionId; }
|
||||||
QUrl serverUrl() const { return mServerUrl; }
|
QUrl serverUrl() const { return mServerUrl; }
|
||||||
|
QString loginError() const { return mLoginError; }
|
||||||
|
|
||||||
Q_INVOKABLE bool loggedIn();
|
Q_INVOKABLE bool loggedIn();
|
||||||
Q_INVOKABLE void login(const QString serverUrl, const QString user, const QString password);
|
Q_INVOKABLE void login(const QString serverUrl, const QString user, const QString password);
|
||||||
|
@ -43,6 +45,7 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sessionIdChanged(QString);
|
void sessionIdChanged(QString);
|
||||||
|
void loginErrorChanged(QString);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void reply();
|
void reply();
|
||||||
|
@ -50,6 +53,7 @@ private slots:
|
||||||
private:
|
private:
|
||||||
QString mSessionId;
|
QString mSessionId;
|
||||||
QUrl mServerUrl;
|
QUrl mServerUrl;
|
||||||
|
QString mLoginError;
|
||||||
QNetworkAccessManager *mNetworkManager;
|
QNetworkAccessManager *mNetworkManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue