diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 0b290927..36d1fc92 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -1152,11 +1152,19 @@ ChatPage::leaveRoom(const QString &room_id)
void
ChatPage::inviteUser(QString userid, QString reason)
{
+ auto room = current_room_;
+
+ if (QMessageBox::question(this,
+ tr("Confirm invite"),
+ tr("Do you really want to invite %1 (%2)?")
+ .arg(cache::displayName(current_room_, userid))
+ .arg(userid)) != QMessageBox::Yes)
+ return;
+
http::client()->invite_user(
- current_room_.toStdString(),
+ room.toStdString(),
userid.toStdString(),
- [this, userid, room = current_room_](const mtx::responses::Empty &,
- mtx::http::RequestErr err) {
+ [this, userid, room](const mtx::responses::Empty &, mtx::http::RequestErr err) {
if (err) {
emit showNotification(
tr("Failed to invite %1 to %2: %3")
@@ -1171,11 +1179,19 @@ ChatPage::inviteUser(QString userid, QString reason)
void
ChatPage::kickUser(QString userid, QString reason)
{
+ auto room = current_room_;
+
+ if (QMessageBox::question(this,
+ tr("Confirm kick"),
+ tr("Do you really want to kick %1 (%2)?")
+ .arg(cache::displayName(current_room_, userid))
+ .arg(userid)) != QMessageBox::Yes)
+ return;
+
http::client()->kick_user(
- current_room_.toStdString(),
+ room.toStdString(),
userid.toStdString(),
- [this, userid, room = current_room_](const mtx::responses::Empty &,
- mtx::http::RequestErr err) {
+ [this, userid, room](const mtx::responses::Empty &, mtx::http::RequestErr err) {
if (err) {
emit showNotification(
tr("Failed to kick %1 to %2: %3")
@@ -1190,11 +1206,19 @@ ChatPage::kickUser(QString userid, QString reason)
void
ChatPage::banUser(QString userid, QString reason)
{
+ auto room = current_room_;
+
+ if (QMessageBox::question(this,
+ tr("Confirm ban"),
+ tr("Do you really want to ban %1 (%2)?")
+ .arg(cache::displayName(current_room_, userid))
+ .arg(userid)) != QMessageBox::Yes)
+ return;
+
http::client()->ban_user(
- current_room_.toStdString(),
+ room.toStdString(),
userid.toStdString(),
- [this, userid, room = current_room_](const mtx::responses::Empty &,
- mtx::http::RequestErr err) {
+ [this, userid, room](const mtx::responses::Empty &, mtx::http::RequestErr err) {
if (err) {
emit showNotification(
tr("Failed to ban %1 in %2: %3")
@@ -1209,11 +1233,19 @@ ChatPage::banUser(QString userid, QString reason)
void
ChatPage::unbanUser(QString userid, QString reason)
{
+ auto room = current_room_;
+
+ if (QMessageBox::question(this,
+ tr("Confirm unban"),
+ tr("Do you really want to unban %1 (%2)?")
+ .arg(cache::displayName(current_room_, userid))
+ .arg(userid)) != QMessageBox::Yes)
+ return;
+
http::client()->unban_user(
- current_room_.toStdString(),
+ room.toStdString(),
userid.toStdString(),
- [this, userid, room = current_room_](const mtx::responses::Empty &,
- mtx::http::RequestErr err) {
+ [this, userid, room](const mtx::responses::Empty &, mtx::http::RequestErr err) {
if (err) {
emit showNotification(
tr("Failed to unban %1 in %2: %3")
diff --git a/src/dialogs/UserProfile.cpp b/src/dialogs/UserProfile.cpp
index 3415b127..086dbb40 100644
--- a/src/dialogs/UserProfile.cpp
+++ b/src/dialogs/UserProfile.cpp
@@ -1,6 +1,7 @@
#include <QHBoxLayout>
#include <QLabel>
#include <QListWidget>
+#include <QMessageBox>
#include <QShortcut>
#include <QVBoxLayout>
@@ -97,6 +98,14 @@ UserProfile::UserProfile(QWidget *parent)
if (utils::localUser() != user_id)
req.invite = {user_id.toStdString()};
+ if (QMessageBox::question(
+ this,
+ tr("Confirm DM"),
+ tr("Do you really want to invite %1 (%2) to a direct chat?")
+ .arg(cache::displayName(roomId_, user_id))
+ .arg(user_id)) != QMessageBox::Yes)
+ return;
+
emit ChatPage::instance()->createRoom(req);
});
@@ -199,6 +208,8 @@ UserProfile::init(const QString &userId, const QString &roomId)
{
resetToDefaults();
+ this->roomId_ = roomId;
+
auto displayName = cache::displayName(roomId, userId);
userIdLabel_->setText(userId);
diff --git a/src/dialogs/UserProfile.h b/src/dialogs/UserProfile.h
index 81276d2a..8129fdcf 100644
--- a/src/dialogs/UserProfile.h
+++ b/src/dialogs/UserProfile.h
@@ -53,6 +53,7 @@ private:
void resetToDefaults();
Avatar *avatar_;
+ QString roomId_;
QLabel *userIdLabel_;
QLabel *displayNameLabel_;
|