fix: changing avatar url now sends room events
This commit is contained in:
parent
ada260bf42
commit
e0fccffde0
1 changed files with 50 additions and 3 deletions
|
@ -510,6 +510,13 @@ pub fn set_displayname_route(
|
|||
.unwrap();
|
||||
}
|
||||
|
||||
let mut json = serde_json::Map::new();
|
||||
json.insert("membership".to_owned(), "join".into());
|
||||
json.insert("displayname".to_owned(), (**displayname).into());
|
||||
if let Some(avatar_url) = db.users.avatar_url(&user_id).unwrap() {
|
||||
json.insert("avatar_url".to_owned(), avatar_url.into());
|
||||
}
|
||||
|
||||
// Send a new membership event into all joined rooms
|
||||
for room_id in db.rooms.rooms_joined(&user_id) {
|
||||
db.rooms
|
||||
|
@ -517,7 +524,7 @@ pub fn set_displayname_route(
|
|||
room_id.unwrap(),
|
||||
user_id.clone(),
|
||||
EventType::RoomMember,
|
||||
json!({"membership": "join", "displayname": displayname}),
|
||||
json.clone().into(),
|
||||
None,
|
||||
Some(user_id.to_string()),
|
||||
&db.globals,
|
||||
|
@ -609,8 +616,48 @@ pub fn set_avatar_url_route(
|
|||
db.users
|
||||
.set_avatar_url(&user_id, Some(body.avatar_url.clone()))
|
||||
.unwrap();
|
||||
// TODO send a new m.room.member join event with the updated avatar_url
|
||||
// TODO send a new m.presence event with the updated avatar_url
|
||||
|
||||
|
||||
let mut json = serde_json::Map::new();
|
||||
json.insert("membership".to_owned(), "join".into());
|
||||
json.insert("avatar_url".to_owned(), (*body.avatar_url).into());
|
||||
if let Some(displayname) = db.users.displayname(&user_id).unwrap() {
|
||||
json.insert("displayname".to_owned(), displayname.into());
|
||||
}
|
||||
|
||||
// Send a new membership event into all joined rooms
|
||||
for room_id in db.rooms.rooms_joined(&user_id) {
|
||||
db.rooms
|
||||
.append_pdu(
|
||||
room_id.unwrap(),
|
||||
user_id.clone(),
|
||||
EventType::RoomMember,
|
||||
json.clone().into(),
|
||||
None,
|
||||
Some(user_id.to_string()),
|
||||
&db.globals,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
// Presence update
|
||||
db.global_edus
|
||||
.update_globallatest(
|
||||
&user_id,
|
||||
EduEvent::Presence(ruma_events::presence::PresenceEvent {
|
||||
content: ruma_events::presence::PresenceEventContent {
|
||||
avatar_url: db.users.avatar_url(&user_id).unwrap(),
|
||||
currently_active: None,
|
||||
displayname: db.users.displayname(&user_id).unwrap(),
|
||||
last_active_ago: Some(utils::millis_since_unix_epoch().try_into().unwrap()),
|
||||
presence: ruma_events::presence::PresenceState::Online,
|
||||
status_msg: None,
|
||||
},
|
||||
sender: user_id.clone(),
|
||||
}),
|
||||
&db.globals,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
MatrixResult(Ok(set_avatar_url::Response))
|
||||
|
|
Loading…
Reference in a new issue