🎨 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 dioxus::prelude::*;
|
||||||
use fermi::*;
|
use fermi::*;
|
||||||
use matrix_sdk::room::Room as MatrixRoom;
|
|
||||||
use matrix_sdk::{
|
use matrix_sdk::{
|
||||||
room::RoomMember,
|
room::{Room as MatrixRoom, RoomMember},
|
||||||
ruma::{OwnedRoomId, OwnedUserId},
|
ruma::{OwnedRoomId, OwnedUserId},
|
||||||
};
|
};
|
||||||
use tokio::select;
|
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> {
|
pub fn name(&self) -> Option<String> {
|
||||||
self.matrix_room.name()
|
self.matrix_room.name()
|
||||||
}
|
}
|
||||||
|
@@ -110,12 +110,7 @@ impl Client {
|
|||||||
if ev.state_key == matrix_client.user_id().unwrap() {
|
if ev.state_key == matrix_client.user_id().unwrap() {
|
||||||
if matrix_room.state() == MatrixRoomState::Invited {
|
if matrix_room.state() == MatrixRoomState::Invited {
|
||||||
let room_id = matrix_room.room_id();
|
let room_id = matrix_room.room_id();
|
||||||
let room_topic = matrix_room.topic().map(RefCell::new);
|
let room = Room::from_matrix_room(&matrix_room).await;
|
||||||
let room = Room::new(
|
|
||||||
Arc::new(matrix_room.to_owned()),
|
|
||||||
room_topic,
|
|
||||||
matrix_room.is_direct().await.ok(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if let Err(err) = senders
|
if let Err(err) = senders
|
||||||
.room_sender
|
.room_sender
|
||||||
@@ -152,22 +147,11 @@ impl Client {
|
|||||||
matrix_room: MatrixRoom,
|
matrix_room: MatrixRoom,
|
||||||
senders: Ctx<Senders>,
|
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 {
|
if let SyncStateEvent::Original(_ev) = ev {
|
||||||
let room_sender = &senders.room_sender;
|
let room_sender = &senders.room_sender;
|
||||||
|
|
||||||
let room_id = matrix_room.room_id();
|
let room_id = matrix_room.room_id();
|
||||||
let room_topic = matrix_room.topic().map(RefCell::new);
|
let room = Room::from_matrix_room(&matrix_room).await;
|
||||||
let room = Room::new(
|
|
||||||
Arc::new(matrix_room.to_owned()),
|
|
||||||
room_topic,
|
|
||||||
matrix_room.is_direct().await.ok(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if let Err(err) = room_sender.send(RoomEvent::MemberEvent(room_id.to_owned(), room)) {
|
if let Err(err) = room_sender.send(RoomEvent::MemberEvent(room_id.to_owned(), room)) {
|
||||||
error!(
|
error!(
|
||||||
|
Reference in New Issue
Block a user