♻️ Use of Store interfaces

This commit is contained in:
2024-05-15 19:07:46 +02:00
parent bc30670f6e
commit d77c2a9d12
7 changed files with 178 additions and 43 deletions

View File

@@ -1,21 +1,46 @@
use std::rc::Rc;
use super::{room::Room, space::Space};
use super::{
room::{Invitation, RoomId},
room_member::RoomMember,
space::SpaceId,
};
#[allow(dead_code)]
pub trait AccountStoreConsumerInterface {}
pub trait AccountStoreProviderInterface {
fn on_new_room(&self, room: Rc<Room>) -> Rc<dyn RoomStoreProviderInterface>;
fn on_new_space(&self, space: Rc<Space>) -> Rc<dyn SpaceStoreProviderInterface>;
fn on_new_room(
&self,
room: Rc<dyn RoomStoreConsumerInterface>,
) -> Rc<dyn RoomStoreProviderInterface>;
fn on_new_space(
&self,
space: Rc<dyn SpaceStoreConsumerInterface>,
) -> Rc<dyn SpaceStoreProviderInterface>;
}
#[allow(dead_code)]
pub trait RoomStoreConsumerInterface {}
pub trait RoomStoreProviderInterface {}
pub trait RoomStoreConsumerInterface {
fn id(&self) -> &RoomId;
fn is_direct(&self) -> Option<bool>;
fn name(&self) -> Option<String>;
}
pub trait RoomStoreProviderInterface {
fn on_new_member(&self, member: RoomMember);
fn on_new_name(&self, name: Option<String>);
fn on_invitation(&self, invitation: Invitation);
}
#[allow(dead_code)]
pub trait SpaceStoreConsumerInterface {}
pub trait SpaceStoreConsumerInterface {
fn id(&self) -> &SpaceId;
fn name(&self) -> Option<String>;
}
pub trait SpaceStoreProviderInterface {
fn set_name(&self, _name: Option<String>) {}
}