Notify the user on upload failures

remotes/origin/HEAD
Konstantinos Sideris 7 years ago
parent cd9d1a2ec6
commit a8e17b9c91
  1. 1
      include/MatrixClient.h
  2. 4
      src/ChatPage.cc
  3. 12
      src/MatrixClient.cc

@ -111,6 +111,7 @@ signals:
const QString &homeserver,
const QString &token);
void versionSuccess();
void uploadFailed(int statusCode, const QString &msg);
void imageUploaded(const QString &roomid,
const QString &filename,
const QString &url,

@ -256,6 +256,10 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client,
connect(
client_.data(), &MatrixClient::roomCreationFailed, this, &ChatPage::showNotification);
connect(client_.data(), &MatrixClient::joinFailed, this, &ChatPage::showNotification);
connect(client_.data(), &MatrixClient::uploadFailed, this, [=](int, const QString &msg) {
text_input_->hideUploadSpinner();
emit showNotification(msg);
});
connect(client_.data(),
&MatrixClient::imageUploaded,
this,

@ -1209,26 +1209,28 @@ MatrixClient::getUploadReply(QNetworkReply *reply)
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (status == 0 || status >= 400) {
emit syncFailed(reply->errorString());
emit uploadFailed(status,
QString("Media upload failed - %1").arg(reply->errorString()));
return object;
}
auto res_data = reply->readAll();
if (res_data.isEmpty())
if (res_data.isEmpty()) {
emit uploadFailed(status, "Media upload failed - Empty response");
return object;
}
auto json = QJsonDocument::fromJson(res_data);
if (!json.isObject()) {
qDebug() << "Media upload: Response is not a json object.";
emit uploadFailed(status, "Media upload failed - Invalid response");
return object;
}
object = json.object();
if (!object.contains("content_uri")) {
qDebug() << "Media upload: Missing content_uri key";
qDebug() << object;
emit uploadFailed(status, "Media upload failed - Missing 'content_uri'");
return QJsonObject{};
}

Loading…
Cancel
Save