diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp index 8b67a6845..8cf8417b6 100644 --- a/Telegram/SourceFiles/settings/settings_information.cpp +++ b/Telegram/SourceFiles/settings/settings_information.cpp @@ -45,12 +45,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/file_utilities.h" #include "base/call_delayed.h" #include "base/unixtime.h" +#include "base/random.h" #include "styles/style_layers.h" #include "styles/style_settings.h" #include "styles/style_menu_icons.h" #include #include +#include namespace Settings { namespace { @@ -145,6 +147,17 @@ private: return upload; } +void UploadPhoto(not_null user, QImage image) { + auto bytes = QByteArray(); + auto buffer = QBuffer(&bytes); + image.save(&buffer, "JPG", 87); + user->setUserpic(base::RandomValue(), ImageLocation( + { .data = InMemoryLocation{ .bytes = bytes } }, + image.width(), + image.height())); + user->session().api().peerPhoto().upload(user, std::move(image)); +} + void SetupPhoto( not_null container, not_null controller, @@ -162,9 +175,7 @@ void SetupPhoto( upload->chosenImages( ) | rpl::start_with_next([=](QImage &&image) { - self->session().api().peerPhoto().upload( - self, - base::duplicate(image)); + UploadPhoto(self, image); photo->changeTo(std::move(image)); }, upload->lifetime());