♻️ Add Room domain entity
This commit is contained in:
@@ -12,7 +12,8 @@ use log::{debug, error};
|
||||
use matrix_sdk::ruma::OwnedRoomId;
|
||||
use tokio::sync::broadcast::Receiver;
|
||||
|
||||
use crate::base::{sync_rooms, Room, ROOMS};
|
||||
use crate::base::{sync_rooms, ROOMS};
|
||||
use crate::domain::model::room::Room;
|
||||
use crate::infrastructure::messaging::matrix::requester::Receivers;
|
||||
use conversation::Conversation;
|
||||
use navbar::Navbar;
|
||||
@@ -35,10 +36,13 @@ fn render_rooms_tabs(
|
||||
let displayed_room_ids = displayed_room_ids.read();
|
||||
rooms_ref
|
||||
.values()
|
||||
.filter(|room| displayed_room_ids.contains(&room.borrow().id()))
|
||||
.filter(|room| displayed_room_ids.contains(room.borrow().id()))
|
||||
.map(|room| {
|
||||
let room = room.borrow();
|
||||
let room_name = room.name().unwrap_or(room.id().to_string());
|
||||
let room_name = match room.name() {
|
||||
Some(room_name) => room_name.clone(),
|
||||
None => room.id().to_string(),
|
||||
};
|
||||
rsx!(
|
||||
div {
|
||||
class: ClassName::TAB,
|
||||
@@ -62,10 +66,13 @@ fn render_rooms_conversations(
|
||||
let displayed_room_ids = displayed_room_ids.read();
|
||||
rooms_ref
|
||||
.values()
|
||||
.filter(|room| displayed_room_ids.contains(&room.borrow().id()))
|
||||
.filter(|room| displayed_room_ids.contains(room.borrow().id()))
|
||||
.map(|room| {
|
||||
let room_id = room.borrow().id();
|
||||
rsx!(Conversation { room_id: room_id },)
|
||||
let room = room.borrow();
|
||||
let room_id = room.id();
|
||||
rsx!(Conversation {
|
||||
room_id: room_id.clone()
|
||||
},)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ use dioxus::prelude::*;
|
||||
use dioxus_free_icons::icons::io_icons::IoChevronDown;
|
||||
use dioxus_free_icons::Icon;
|
||||
use log::debug;
|
||||
use matrix_sdk::{ruma::OwnedRoomId, RoomState};
|
||||
|
||||
use crate::base::{ByIdRooms, Room, CHATS_WIN_INTERFACE, ROOMS};
|
||||
use crate::base::{CHATS_WIN_INTERFACE, ROOMS};
|
||||
use crate::domain::model::room::{ByIdRooms, Room, RoomId};
|
||||
use crate::ui::components::chats_window::interface::Interface as ChatsWindowInterface;
|
||||
|
||||
turf::style_sheet!("src/ui/components/contacts_window/contacts_section.scss");
|
||||
@@ -32,7 +32,7 @@ pub(super) fn filter_people_conversations(
|
||||
let mut filtered_rooms = Vec::<RefCell<Room>>::with_capacity(by_id_rooms.len());
|
||||
|
||||
for room in by_id_rooms.values() {
|
||||
let is_direct = room.borrow().is_direct.unwrap();
|
||||
let is_direct = room.borrow().is_direct().unwrap();
|
||||
if !is_direct {
|
||||
filtered_rooms.push(room.to_owned());
|
||||
}
|
||||
@@ -48,7 +48,7 @@ pub(super) fn filter_room_conversations(
|
||||
let mut filtered_rooms = Vec::<RefCell<Room>>::with_capacity(by_id_rooms.len());
|
||||
|
||||
for room in by_id_rooms.values() {
|
||||
let is_direct = room.borrow().is_direct.unwrap();
|
||||
let is_direct = room.borrow().is_direct().unwrap();
|
||||
if is_direct {
|
||||
filtered_rooms.push(room.to_owned());
|
||||
}
|
||||
@@ -57,10 +57,7 @@ pub(super) fn filter_room_conversations(
|
||||
}
|
||||
|
||||
// TODO: Handle errors
|
||||
fn on_clicked_room(
|
||||
room_id: &OwnedRoomId,
|
||||
chats_window_interface: &GlobalSignal<ChatsWindowInterface>,
|
||||
) {
|
||||
fn on_clicked_room(room_id: &RoomId, chats_window_interface: &GlobalSignal<ChatsWindowInterface>) {
|
||||
let _ = chats_window_interface.read().toggle_room(room_id.clone());
|
||||
}
|
||||
|
||||
@@ -89,22 +86,19 @@ pub fn ContactsSection(props: ContactsSectionProps) -> Element {
|
||||
]
|
||||
.join(" ");
|
||||
|
||||
let rendered_contacts = contacts.into_iter().map(|room_ref| {
|
||||
let room = room_ref.borrow();
|
||||
let rendered_contacts = contacts.into_iter().map(|room| {
|
||||
let room = room.borrow();
|
||||
|
||||
let room_topic = room
|
||||
.topic
|
||||
.as_ref()
|
||||
.unwrap_or(&RefCell::new(NO_SUBJECT_REPR.to_string()))
|
||||
.borrow()
|
||||
.to_owned();
|
||||
let room_name = room.name().unwrap_or(NO_NAME_REPR.to_string());
|
||||
let room_id = room.id();
|
||||
|
||||
let is_invited = room.matrix_room.state() == RoomState::Invited;
|
||||
let topic = room.topic().clone().unwrap_or("".to_string());
|
||||
let name = match room.name() {
|
||||
Some(name) => name.clone(),
|
||||
None => NO_NAME_REPR.to_string(),
|
||||
};
|
||||
let id = room.id().clone();
|
||||
let is_invited = room.is_invited().unwrap_or(false);
|
||||
|
||||
let formatted = format!(
|
||||
"{room_name} - {}",
|
||||
"{name} - {}",
|
||||
if is_invited {
|
||||
"Invited - ".to_string()
|
||||
} else {
|
||||
@@ -114,7 +108,7 @@ pub fn ContactsSection(props: ContactsSectionProps) -> Element {
|
||||
|
||||
rsx! {
|
||||
li {
|
||||
onclick: move |_| on_clicked_room(&room_id, &CHATS_WIN_INTERFACE),
|
||||
onclick: move |_| on_clicked_room(&id, &CHATS_WIN_INTERFACE),
|
||||
img {
|
||||
src: "./images/status_online.png",
|
||||
},
|
||||
@@ -123,7 +117,7 @@ pub fn ContactsSection(props: ContactsSectionProps) -> Element {
|
||||
},
|
||||
p {
|
||||
style: "color: darkgrey;",
|
||||
{room_topic},
|
||||
{topic},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@@ -654,8 +654,6 @@ pub fn Login() -> Element {
|
||||
let field_errors = errors.field_errors();
|
||||
on_validation_errors(&field_errors, &handlers);
|
||||
}
|
||||
|
||||
spinner_animated.set(false);
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user