diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index a82796a8..d5c2d428 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -896,39 +896,47 @@ MediaUpload::startUpload()
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
- thumbnail_.save(&buffer, "PNG");
- auto payload = std::string(ba.data(), ba.size());
- if (encrypt_) {
- mtx::crypto::BinaryBuf buf;
- std::tie(buf, thumbnailEncryptedFile) = mtx::crypto::encrypt_file(std::move(payload));
- payload = mtx::crypto::to_string(buf);
- }
- thumbnailSize_ = payload.size();
-
- http::client()->upload(
- payload,
- encryptedFile ? "application/octet-stream" : "image/png",
- "",
- [this](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) mutable {
- if (err) {
- emit ChatPage::instance()->showNotification(
- tr("Failed to upload media. Please try again."));
- nhlog::net()->warn("failed to upload media: {} {} ({})",
- err->matrix_error.error,
- to_string(err->matrix_error.errcode),
- static_cast<int>(err->status_code));
- thumbnail_ = QImage();
- startUpload();
- return;
- }
+ thumbnail_.save(&buffer, "PNG", 0);
+ if (ba.size() >= (data.size() - data.size() / 10)) {
+ nhlog::ui()->info(
+ "Thumbnail is not a lot smaller than original image, not uploading it");
+ nhlog::ui()->debug(
+ "\n Image size: {:9d}\nThumbnail size: {:9d}", data.size(), ba.size());
+ } else {
+ auto payload = std::string(ba.data(), ba.size());
+ if (encrypt_) {
+ mtx::crypto::BinaryBuf buf;
+ std::tie(buf, thumbnailEncryptedFile) =
+ mtx::crypto::encrypt_file(std::move(payload));
+ payload = mtx::crypto::to_string(buf);
+ }
+ thumbnailSize_ = payload.size();
+
+ http::client()->upload(
+ payload,
+ encryptedFile ? "application/octet-stream" : "image/png",
+ "",
+ [this](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) mutable {
+ if (err) {
+ emit ChatPage::instance()->showNotification(
+ tr("Failed to upload media. Please try again."));
+ nhlog::net()->warn("failed to upload media: {} {} ({})",
+ err->matrix_error.error,
+ to_string(err->matrix_error.errcode),
+ static_cast<int>(err->status_code));
+ thumbnail_ = QImage();
+ startUpload();
+ return;
+ }
- thumbnailUrl_ = QString::fromStdString(res.content_uri);
- if (thumbnailEncryptedFile)
- thumbnailEncryptedFile->url = res.content_uri;
+ thumbnailUrl_ = QString::fromStdString(res.content_uri);
+ if (thumbnailEncryptedFile)
+ thumbnailEncryptedFile->url = res.content_uri;
- startUpload();
- });
- return;
+ startUpload();
+ });
+ return;
+ }
}
auto payload = std::string(data.data(), data.size());
|