diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-05-29 16:48:54 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-05-29 16:48:54 +0900 |
commit | c55c1cc83985f808e9cfc7475e5113566a1ac5a8 (patch) | |
tree | 58390e0bca3972c24b41a69fd3e839ebc41f6cf2 /lib | |
parent | e58a03c84f89a5ec9091ca81ef040df659700ef2 (diff) | |
download | libquotient-c55c1cc83985f808e9cfc7475e5113566a1ac5a8.tar.gz libquotient-c55c1cc83985f808e9cfc7475e5113566a1ac5a8.zip |
BaseJob: Treat M_CONSENT_NOT_GIVEN separately from other content access errors
Closes #207.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/jobs/basejob.cpp | 12 | ||||
-rw-r--r-- | lib/jobs/basejob.h | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/jobs/basejob.cpp b/lib/jobs/basejob.cpp index 37ecad18..a8fc0adc 100644 --- a/lib/jobs/basejob.cpp +++ b/lib/jobs/basejob.cpp @@ -313,7 +313,15 @@ void BaseJob::gotReply() emit retryScheduled(d->retriesTaken, retryInterval); return; } - if (!json.isEmpty()) + if (json.value("errcode").toString() == "M_CONSENT_NOT_GIVEN") + { + auto urlString = json.value("consent_uri").toString(); + setStatus(UserConsentRequiredError, + tr("You must agree with the server's privacy policy; " + "please visit %1").arg(urlString)); + d->errorUrl = urlString; + } + if (!json.isEmpty()) // FIXME: The below is not localisable setStatus(IncorrectRequestError, json.value("error").toString()); } } @@ -414,7 +422,7 @@ BaseJob::Status BaseJob::parseReply(QNetworkReply* reply) if( error.error == QJsonParseError::NoError ) return parseJson(json); else - return { JsonParseError, error.errorString() }; + return { IncorrectResponseError, error.errorString() }; } BaseJob::Status BaseJob::parseJson(const QJsonDocument&) diff --git a/lib/jobs/basejob.h b/lib/jobs/basejob.h index 25f13472..0d791d3a 100644 --- a/lib/jobs/basejob.h +++ b/lib/jobs/basejob.h @@ -65,6 +65,7 @@ namespace QMatrixClient , TooManyRequestsError , RequestNotImplementedError , NetworkAuthRequiredError + , UserConsentRequiredError , UserDefinedError = 200 }; |