🎨 Factorize Room creation from MatrixRoom instances
This commit is contained in:
13
src/base.rs
13
src/base.rs
@@ -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()
|
||||
}
|
||||
|
@@ -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!(
|
||||
|
Reference in New Issue
Block a user