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.Window 2.0
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Dialogs 1.1
|
||||
import Qt.labs.settings 1.0
|
||||
import TTRSS 1.0
|
||||
|
||||
|
@ -210,14 +211,27 @@ ApplicationWindow {
|
|||
visible: !serverLogin.loggedIn()
|
||||
|
||||
function login() {
|
||||
console.log("FOO")
|
||||
serverLogin.login(serverUrl, userName, password)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
MessageDialog {
|
||||
id: loginErrorAlert
|
||||
title: "A login error occured"
|
||||
text: serverLogin.loginError
|
||||
onAccepted: visible = false
|
||||
}
|
||||
|
||||
ServerLogin {
|
||||
id: serverLogin
|
||||
onSessionIdChanged: app.loggedIn()
|
||||
onLoginErrorChanged: {
|
||||
console.log("loginError:", loginError)
|
||||
if(loginError.length > 0) {
|
||||
loginErrorAlert.visible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Server {
|
||||
|
|
|
@ -88,23 +88,35 @@ void TinyTinyRSSLogin::reply()
|
|||
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
||||
|
||||
if (reply) {
|
||||
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
|
||||
QString jsonString = QString(reply->readAll());
|
||||
QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8());
|
||||
mSessionId = json.object().value("content").toObject().value("session_id").toString();
|
||||
if(json.object().value("content").toObject().value("error").toString().length() > 0) {
|
||||
|
||||
emit sessionIdChanged(mSessionId);
|
||||
mLoginError = json.object().value("content").toObject().value("error").toString();
|
||||
qWarning() << mLoginError;
|
||||
emit loginErrorChanged(mLoginError);
|
||||
|
||||
QSettings settings;
|
||||
settings.setValue("sessionId", mSessionId);
|
||||
settings.setValue("serverUrl", mServerUrl);
|
||||
settings.sync();
|
||||
} else {
|
||||
mSessionId = json.object().value("content").toObject().value("session_id").toString();
|
||||
|
||||
emit sessionIdChanged(mSessionId);
|
||||
|
||||
QSettings settings;
|
||||
settings.setValue("sessionId", mSessionId);
|
||||
settings.setValue("serverUrl", mServerUrl);
|
||||
settings.sync();
|
||||
}
|
||||
} else {
|
||||
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
//do some error management
|
||||
qWarning() << "HTTP error: " << httpStatus << " :: " << reply->error();
|
||||
mLoginError = "HTTP error: "
|
||||
+ reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString()
|
||||
+ " :: "
|
||||
+ reply->errorString();
|
||||
qWarning() << mLoginError;
|
||||
|
||||
emit loginErrorChanged(mLoginError);
|
||||
}
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
|
|
@ -30,12 +30,14 @@ class TinyTinyRSSLogin : public QObject
|
|||
Q_OBJECT
|
||||
Q_PROPERTY(QString sessionId READ sessionId NOTIFY sessionIdChanged)
|
||||
Q_PROPERTY(QUrl serverUrl READ serverUrl)
|
||||
Q_PROPERTY(QString loginError READ loginError NOTIFY loginErrorChanged)
|
||||
|
||||
public:
|
||||
TinyTinyRSSLogin(QObject *parent = 0);
|
||||
~TinyTinyRSSLogin();
|
||||
QString sessionId() const { return mSessionId; }
|
||||
QUrl serverUrl() const { return mServerUrl; }
|
||||
QString loginError() const { return mLoginError; }
|
||||
|
||||
Q_INVOKABLE bool loggedIn();
|
||||
Q_INVOKABLE void login(const QString serverUrl, const QString user, const QString password);
|
||||
|
@ -43,6 +45,7 @@ public:
|
|||
|
||||
signals:
|
||||
void sessionIdChanged(QString);
|
||||
void loginErrorChanged(QString);
|
||||
|
||||
private slots:
|
||||
void reply();
|
||||
|
@ -50,6 +53,7 @@ private slots:
|
|||
private:
|
||||
QString mSessionId;
|
||||
QUrl mServerUrl;
|
||||
QString mLoginError;
|
||||
QNetworkAccessManager *mNetworkManager;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue