Propagate errors during /login & /versions

This commit is contained in:
Konstantinos Sideris 2018-02-28 22:07:53 +02:00
parent 9de1ec1b7b
commit f6c279f6f2
2 changed files with 10 additions and 12 deletions

View File

@ -222,20 +222,8 @@ LoginPage::onServerAddressEntered()
void
LoginPage::versionError(QString error)
{
// Matrix homeservers are often kept on a subdomain called 'matrix'
// so let's try that next, unless the address was set explicitly or the domain
// part of the username already points to this subdomain
QUrl currentServer = client_->getHomeServer();
QString mxidAddress = matrixid_input_->text().split(":").at(1);
if (currentServer.host() == inferredServerAddress_ &&
!currentServer.host().startsWith("matrix")) {
error_label_->setText("");
currentServer.setHost(QString("matrix.") + currentServer.host());
serverInput_->setText(currentServer.host());
client_->setServer(currentServer.host());
client_->versions();
return;
}
error_label_->setText(error);
serverInput_->show();

View File

@ -123,6 +123,11 @@ MatrixClient::login(const QString &username, const QString &password) noexcept
int status_code =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (reply->error()) {
emit loginError(reply->errorString());
return;
}
if (status_code == 403) {
emit loginError(tr("Wrong username or password"));
return;
@ -428,6 +433,11 @@ MatrixClient::versions() noexcept
int status_code =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (reply->error()) {
emit versionError(reply->errorString());
return;
}
if (status_code == 404) {
emit versionError("Versions endpoint was not found on the server. Possibly "
"not a Matrix server");