🎨 Factorize Room creation from MatrixRoom instances

This commit is contained in:
2023-12-31 15:21:49 +01:00
parent 04628ae10d
commit 5fe13335a1
2 changed files with 13 additions and 20 deletions

View File

@@ -7,9 +7,8 @@ use std::{collections::HashMap, sync::Arc};
use dioxus::prelude::*;
use fermi::*;
use matrix_sdk::room::Room as MatrixRoom;
use matrix_sdk::{
room::RoomMember,
room::{Room as MatrixRoom, RoomMember},
ruma::{OwnedRoomId, OwnedUserId},
};
use tokio::select;
@@ -63,6 +62,16 @@ impl Room {
}
}
pub async fn from_matrix_room(matrix_room: &MatrixRoom) -> Self {
let room_topic = matrix_room.topic().map(RefCell::new);
Self::new(
Arc::new(matrix_room.to_owned()),
room_topic,
matrix_room.is_direct().await.ok(),
)
}
pub fn name(&self) -> Option<String> {
self.matrix_room.name()
}

View File

@@ -110,12 +110,7 @@ impl Client {
if ev.state_key == matrix_client.user_id().unwrap() {
if matrix_room.state() == MatrixRoomState::Invited {
let room_id = matrix_room.room_id();
let room_topic = matrix_room.topic().map(RefCell::new);
let room = Room::new(
Arc::new(matrix_room.to_owned()),
room_topic,
matrix_room.is_direct().await.ok(),
);
let room = Room::from_matrix_room(&matrix_room).await;
if let Err(err) = senders
.room_sender
@@ -152,22 +147,11 @@ impl Client {
matrix_room: MatrixRoom,
senders: Ctx<Senders>,
) {
error!("== on_room_member_event ==");
// dbg!(&matrix_room);
dbg!(matrix_room.room_id());
dbg!(ev.membership());
if let SyncStateEvent::Original(_ev) = ev {
let room_sender = &senders.room_sender;
let room_id = matrix_room.room_id();
let room_topic = matrix_room.topic().map(RefCell::new);
let room = Room::new(
Arc::new(matrix_room.to_owned()),
room_topic,
matrix_room.is_direct().await.ok(),
);
let room = Room::from_matrix_room(&matrix_room).await;
if let Err(err) = room_sender.send(RoomEvent::MemberEvent(room_id.to_owned(), room)) {
error!(