33#include < QFileInfo>
44#include < QHttpMultiPart>
55
6+ #ifdef Q_OS_WASM
7+ #include < QFileDialog>
8+ #endif
9+
610using namespace Qt ::Literals::StringLiterals;
711
812UsersApi::UsersApi (
@@ -57,20 +61,34 @@ void UsersApi::updateMe(const QString& displayName, const QString& username)
5761
5862void UsersApi::uploadAvatar (const QUrl& path)
5963{
64+ #ifdef Q_OS_WASM
65+ if (path.isEmpty ())
66+ QFileDialog::getOpenFileContent (" Images (*.png *.jpg *.jpeg)" ,
67+ [this ](const QString& fileName, const QByteArray& fileContent)
68+ {
69+ #endif
6070 const auto multiPart = new QHttpMultiPart (QHttpMultiPart::FormDataType);
6171
6272 QHttpPart imagePart;
6373 imagePart.setHeader (
6474 QNetworkRequest::ContentDispositionHeader,
6575 { u" form-data; name=\" avatar\" ; filename=\" %1\" " _s
66- .arg (QFileInfo (path.toString ()).fileName ()) }
76+ .arg (
77+ #ifdef Q_OS_WASM
78+ fileName
79+ #else
80+ QFileInfo (path.toString ()).fileName ()
81+ #endif
82+ ) }
6783 );
6884
69- #ifndef Q_OS_ANDROID
85+ #if !defined( Q_OS_ANDROID) && !defined(Q_OS_WASM)
7086 QFile file (path.toLocalFile ());
71- #else
87+ #elif !defined(Q_OS_WASM)
7288 QFile file (path.toString ());
7389#endif
90+
91+ #ifndef Q_OS_WASM
7492 if (!file.open (QFile::ReadOnly))
7593 {
7694 multiPart->deleteLater ();
@@ -80,7 +98,9 @@ void UsersApi::uploadAvatar(const QUrl& path)
8098 }
8199
82100 imagePart.setBody (file.readAll ());
83-
101+ #else
102+ imagePart.setBody (fileContent);
103+ #endif
84104 multiPart->append (imagePart);
85105
86106 auto req = requestFactory.createRequest (" /users/me/avatar" );
@@ -96,5 +116,9 @@ void UsersApi::uploadAvatar(const QUrl& path)
96116 emit userReceived (obj);
97117 emit profileReceived (obj);
98118 });
119+
120+ #ifdef Q_OS_WASM
121+ });
122+ #endif
99123}
100124
0 commit comments