summary refs log tree commit diff
path: root/src/MatrixClient.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 23:59:50 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 23:59:50 +0200
commitef0b0f68795786751b04615451d42dbd7b3d7a5d (patch)
treea04f4677032d054d803e0a67929fbfe4d46eb87a /src/MatrixClient.cc
parentAdd gui option for joining rooms (#25) (diff)
downloadnheko-ef0b0f68795786751b04615451d42dbd7b3d7a5d.tar.xz
Add menu to invite users
Diffstat (limited to 'src/MatrixClient.cc')
-rw-r--r--src/MatrixClient.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc

index 2878c4bb..b18b6e4a 100644 --- a/src/MatrixClient.cc +++ b/src/MatrixClient.cc
@@ -861,6 +861,36 @@ MatrixClient::leaveRoom(const QString &roomId) } void +MatrixClient::inviteUser(const QString &roomId, const QString &user) +{ + QUrlQuery query; + query.addQueryItem("access_token", token_); + + QUrl endpoint(server_); + endpoint.setPath(clientApiUrl_ + QString("/rooms/%1/invite").arg(roomId)); + endpoint.setQuery(query); + + QNetworkRequest request(endpoint); + request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); + + QJsonObject body{{"user_id", user}}; + auto reply = post(request, QJsonDocument(body).toJson(QJsonDocument::Compact)); + + connect(reply, &QNetworkReply::finished, this, [this, reply, roomId, user]() { + reply->deleteLater(); + + int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + + if (status == 0 || status >= 400) { + // TODO: Handle failure. + qWarning() << reply->errorString(); + return; + } + + emit invitedUser(roomId, user); + }); +} +void MatrixClient::sendTypingNotification(const QString &roomid, int timeoutInMillis) { QSettings settings;