🚧 Add Avatar management and refresh the Matrix client part
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
use std::{collections::HashMap, rc::Rc};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use futures::future::join_all;
|
||||
use tokio::{
|
||||
select,
|
||||
sync::{broadcast::Receiver, mpsc::UnboundedSender},
|
||||
@@ -23,8 +22,8 @@ use crate::{
|
||||
RoomMessagingProviderInterface, SpaceMessagingConsumerInterface,
|
||||
SpaceMessagingProviderInterface,
|
||||
},
|
||||
room::{Room, RoomId},
|
||||
room_member::RoomMember,
|
||||
room::{Invitation, Room, RoomId},
|
||||
room_member::{AvatarUrl, RoomMember},
|
||||
space::Space,
|
||||
},
|
||||
utils::oneshot,
|
||||
@@ -182,19 +181,29 @@ impl AccountMessagingProviderInterface for Requester {
|
||||
if let Ok(room_event) = room_event {
|
||||
if let Some(consumer) = room_events_consumers.get(&room_id) {
|
||||
match room_event {
|
||||
RoomEvent::Invitation() => {
|
||||
consumer.on_invitation().await;
|
||||
RoomEvent::Invitation(user_id, sender_id, is_account_user) => {
|
||||
let invitation = Invitation::new(user_id, sender_id, is_account_user);
|
||||
consumer.on_invitation(invitation).await;
|
||||
},
|
||||
RoomEvent::Join(user_id, user_name, avatar_url, is_account_user) => {
|
||||
let member = RoomMember::new(
|
||||
UserId::from(user_id),
|
||||
user_name,
|
||||
avatar_url,
|
||||
room_id,
|
||||
is_account_user,
|
||||
client.clone());
|
||||
consumer.on_membership(member).await;
|
||||
},
|
||||
// RoomEvent::Membership(user_id, is_account_user) => {
|
||||
// let member = RoomMember::new(UserId::from(user_id), room_id, is_account_user);
|
||||
// consumer.on_membership(member).await;
|
||||
// },
|
||||
RoomEvent::NewTopic(topic) => {
|
||||
consumer.on_new_topic(topic).await;
|
||||
},
|
||||
RoomEvent::NewName(name) => {
|
||||
consumer.on_new_name(name).await;
|
||||
},
|
||||
RoomEvent::NewAvatar(avatar) => {
|
||||
consumer.on_new_avatar(avatar).await;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
} else {
|
||||
@@ -256,12 +265,14 @@ impl MemberMessagingProviderInterface for Requester {
|
||||
&self,
|
||||
room_id: &RoomId,
|
||||
user_id: &UserId,
|
||||
avatar_url: &Option<AvatarUrl>,
|
||||
) -> anyhow::Result<Option<Avatar>> {
|
||||
request_to_worker!(
|
||||
self,
|
||||
WorkerTask::GetRoomMemberAvatar,
|
||||
room_id.clone(),
|
||||
user_id.clone()
|
||||
user_id.clone(),
|
||||
avatar_url.clone()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user