From d5d996eec3f210219e1822e88a9b4839e7ce3b8e Mon Sep 17 00:00:00 2001 From: Adrien Date: Thu, 27 Jun 2024 08:25:11 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20topic=20to=20the=20UI=20store?= =?UTF-8?q?=20Room?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/domain/model/room.rs | 9 ++++----- src/domain/model/store_interface.rs | 2 ++ src/ui/store/room.rs | 10 +++++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/domain/model/room.rs b/src/domain/model/room.rs index d9089a2..119d8e5 100644 --- a/src/domain/model/room.rs +++ b/src/domain/model/room.rs @@ -123,11 +123,6 @@ impl Room { self.name.borrow().clone() } - #[allow(dead_code)] - pub fn topic(&self) -> &Option { - &self.topic - } - #[allow(dead_code)] pub fn set_topic(&mut self, topic: Option) { self.topic = topic; @@ -308,6 +303,10 @@ impl RoomStoreConsumerInterface for Room { self.name.borrow().clone() } + fn topic(&self) -> Option { + self.topic.clone() + } + async fn avatar(&self) -> Option { self.get_avatar().await } diff --git a/src/domain/model/store_interface.rs b/src/domain/model/store_interface.rs index 3cc5747..10aad7a 100644 --- a/src/domain/model/store_interface.rs +++ b/src/domain/model/store_interface.rs @@ -28,6 +28,7 @@ pub trait RoomStoreConsumerInterface { fn id(&self) -> &RoomId; fn is_direct(&self) -> Option; fn name(&self) -> Option; + fn topic(&self) -> Option; #[allow(dead_code)] async fn avatar(&self) -> Option; @@ -38,6 +39,7 @@ pub trait RoomStoreConsumerInterface { pub trait RoomStoreProviderInterface { fn on_new_name(&self, name: Option); fn on_new_avatar(&self, avatar: Option); + fn on_new_topic(&self, topic: Option); fn on_new_member(&self, member: RoomMember); fn on_invitation(&self, invitation: Invitation); } diff --git a/src/ui/store/room.rs b/src/ui/store/room.rs index 413ec93..f65e37d 100644 --- a/src/ui/store/room.rs +++ b/src/ui/store/room.rs @@ -12,13 +12,15 @@ use crate::domain::model::{ store_interface::{RoomStoreConsumerInterface, RoomStoreProviderInterface}, }; -#[modx::props(id, is_direct, name, spaces)] +#[modx::props(id, is_direct, name, topic, spaces)] #[modx::store] pub struct Store { id: RoomId, is_direct: Option, name: Option, + topic: Option, + avatar: Option, members: Vec, invitations: Vec, @@ -45,6 +47,7 @@ impl Room { room.id().clone(), room.is_direct(), room.name(), + room.topic(), room.spaces().clone(), ); @@ -71,6 +74,11 @@ impl RoomStoreProviderInterface for Room { store.avatar.set(avatar); } + fn on_new_topic(&self, topic: Option) { + let mut store = self.store.borrow_mut(); + store.topic.set(topic); + } + fn on_new_member(&self, member: RoomMember) { let mut store = self.store.borrow_mut(); store.members.write().push(member);