update room specific username from userprofile

This commit is contained in:
Jedi18 2021-01-27 11:03:08 +05:30
parent e6dc1da22f
commit 5e3f513655
5 changed files with 77 additions and 3 deletions

View file

@ -58,6 +58,40 @@ ApplicationWindow {
onClicked: profile.verify()
}
Button {
id: changeUsername
text: (profile.roomid_ == "") ? qsTr("Change global username") : qsTr("Change room username")
Layout.alignment: Qt.AlignHCenter
enabled : profile.isSelf
visible: profile.isSelf
onClicked: changeUsernameDialog.open()
Dialog {
id: changeUsernameDialog
modal: true
title: (profile.roomid_ == "") ? qsTr("Change global username") : qsTr("Change room username")
onAccepted: profile.changeUsername(usernameEdit.text)
Column {
anchors.fill: parent
Text {
text: "New Username"
anchors.horizontalCenter: parent.horizontalCenter
}
TextField {
id: usernameEdit
focus: true
wrapMode: TextEdit.Wrap
anchors.horizontalCenter: parent.horizontalCenter
}
}
standardButtons: Dialog.Ok | Dialog.Cancel
}
}
Image {
Layout.preferredHeight: 16
Layout.preferredWidth: 16

View file

@ -799,9 +799,9 @@ TimelineModel::viewDecryptedRawMessage(QString id) const
}
void
TimelineModel::openUserProfile(QString userid)
TimelineModel::openUserProfile(QString userid, bool global)
{
emit openProfile(new UserProfile(room_id_, userid, manager_, this));
emit openProfile(new UserProfile(global ? "" : room_id_, userid, manager_, this));
}
void

View file

@ -212,7 +212,7 @@ public:
Q_INVOKABLE void viewRawMessage(QString id) const;
Q_INVOKABLE void viewDecryptedRawMessage(QString id) const;
Q_INVOKABLE void openUserProfile(QString userid);
Q_INVOKABLE void openUserProfile(QString userid, bool global = false);
Q_INVOKABLE void replyAction(QString id);
Q_INVOKABLE void readReceiptsAction(QString id) const;
Q_INVOKABLE void redactEvent(QString id);

View file

@ -4,6 +4,7 @@
#include "DeviceVerificationFlow.h"
#include "Logging.h"
#include "Utils.h"
#include <mtx/responses/common.hpp>
#include "mtx/responses/crypto.hpp"
#include "timeline/TimelineModel.h"
#include "timeline/TimelineViewManager.h"
@ -213,6 +214,44 @@ UserProfile::startChat()
ChatPage::instance()->startChat(this->userid_);
}
void
UserProfile::changeUsername(QString username)
{
// change room username
mtx::events::state::Member member;
member.display_name = username.toStdString();
member.avatar_url =
cache::avatarUrl(roomid_,
QString::fromStdString(http::client()->user_id().to_string()))
.toStdString();
member.membership = mtx::events::state::Membership::Join;
http::client()->send_state_event(roomid_.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(modal, &EditModal::nameChanged, this, [this](const QString &newName) {
if (roomNameLabel_)
roomNameLabel_->setText(newName);
});*/
/*std::string newName = "jedi18";
// change user name
http::client()->set_displayname(
newName, [this]( mtx::http::RequestErr err) {
if (err) {
nhlog::net()->warn("could not change username");
return;
}
});*/
}
void
UserProfile::verify(QString device)
{

View file

@ -109,6 +109,7 @@ public:
// Q_INVOKABLE void ignoreUser();
Q_INVOKABLE void kickUser();
Q_INVOKABLE void startChat();
Q_INVOKABLE void changeUsername(QString username);
signals:
void userStatusChanged();