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(); |                 .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
 |         // Send a new membership event into all joined rooms
 | ||||||
|         for room_id in db.rooms.rooms_joined(&user_id) { |         for room_id in db.rooms.rooms_joined(&user_id) { | ||||||
|             db.rooms |             db.rooms | ||||||
|  | @ -517,7 +524,7 @@ pub fn set_displayname_route( | ||||||
|                     room_id.unwrap(), |                     room_id.unwrap(), | ||||||
|                     user_id.clone(), |                     user_id.clone(), | ||||||
|                     EventType::RoomMember, |                     EventType::RoomMember, | ||||||
|                     json!({"membership": "join", "displayname": displayname}), |                     json.clone().into(), | ||||||
|                     None, |                     None, | ||||||
|                     Some(user_id.to_string()), |                     Some(user_id.to_string()), | ||||||
|                     &db.globals, |                     &db.globals, | ||||||
|  | @ -609,8 +616,48 @@ pub fn set_avatar_url_route( | ||||||
|         db.users |         db.users | ||||||
|             .set_avatar_url(&user_id, Some(body.avatar_url.clone())) |             .set_avatar_url(&user_id, Some(body.avatar_url.clone())) | ||||||
|             .unwrap(); |             .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)) |     MatrixResult(Ok(set_avatar_url::Response)) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue