diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index d0ca46704622699b007158fb6b63bfa3a1c32bbf..90abc63e0bc889e68020fd0dbc7055cc137d82bc 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -300,6 +300,29 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) connect(text_input_, &TextInputWidget::sendBanRoomRequest, this, &ChatPage::banUser); connect(text_input_, &TextInputWidget::sendUnbanRoomRequest, this, &ChatPage::unbanUser); + connect( + text_input_, &TextInputWidget::changeRoomNick, this, [this](const QString &displayName) { + mtx::events::state::Member member; + member.display_name = displayName.toStdString(); + member.avatar_url = + cache::avatarUrl(currentRoom(), + QString::fromStdString(http::client()->user_id().to_string())) + .toStdString(); + member.membership = mtx::events::state::Membership::Join; + + http::client() + ->send_state_event<mtx::events::state::Member, + mtx::events::EventType::RoomMember>( + currentRoom().toStdString(), + http::client()->user_id().to_string(), + member, + [](mtx::responses::EventId, mtx::http::RequestErr err) { + if (err) + nhlog::net()->error("Failed to set room displayname: {}", + err->matrix_error.error); + }); + }); + connect( text_input_, &TextInputWidget::uploadMedia, diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp index af5c278e42f66f81a4f6ec58ee8416e39f74bab5..d2359910a1267fb12cb88e23000d1775e8b01639 100644 --- a/src/TextInputWidget.cpp +++ b/src/TextInputWidget.cpp @@ -576,6 +576,8 @@ TextInputWidget::command(QString command, QString args) sendBanRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1)); } else if (command == "unban") { sendUnbanRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1)); + } else if (command == "roomnick") { + changeRoomNick(args); } else if (command == "shrug") { sendTextMessage("¯\\_(ツ)_/¯"); } else if (command == "fliptable") { diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h index addb61ec30cb1517437d6e3fc972c9428b8c2d6b..a0105eb0346dd354c07bb6f03e827bcb56639a03 100644 --- a/src/TextInputWidget.h +++ b/src/TextInputWidget.h @@ -167,6 +167,7 @@ signals: void sendKickRoomRequest(const QString &userid, const QString &reason); void sendBanRoomRequest(const QString &userid, const QString &reason); void sendUnbanRoomRequest(const QString &userid, const QString &reason); + void changeRoomNick(const QString &displayname); void startedTyping(); void stoppedTyping();