2020-10-15 16:52:08 +00:00
|
|
|
use crate::db::Database;
|
2021-01-29 22:35:07 +00:00
|
|
|
use matrix_sdk::identifiers::RoomId;
|
2021-03-15 20:10:42 +00:00
|
|
|
use matrix_sdk::room::Joined;
|
2020-11-22 20:52:44 +00:00
|
|
|
use matrix_sdk::Client;
|
2020-10-15 16:52:08 +00:00
|
|
|
|
|
|
|
/// A context carried through the system providing access to things
|
|
|
|
/// like the database.
|
|
|
|
#[derive(Clone)]
|
2020-11-03 20:14:15 +00:00
|
|
|
pub struct Context<'a> {
|
2020-10-17 15:18:51 +00:00
|
|
|
pub db: Database,
|
2020-11-22 20:52:44 +00:00
|
|
|
pub matrix_client: &'a Client,
|
2021-01-29 22:35:07 +00:00
|
|
|
pub room: RoomContext<'a>,
|
2020-11-03 20:14:15 +00:00
|
|
|
pub username: &'a str,
|
|
|
|
pub message_body: &'a str,
|
2020-10-15 16:52:08 +00:00
|
|
|
}
|
2021-01-29 22:35:07 +00:00
|
|
|
|
2021-03-15 20:10:42 +00:00
|
|
|
impl Context<'_> {
|
|
|
|
pub fn room_id(&self) -> &RoomId {
|
|
|
|
self.room.id
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-29 22:35:07 +00:00
|
|
|
#[derive(Clone)]
|
|
|
|
pub struct RoomContext<'a> {
|
|
|
|
pub id: &'a RoomId,
|
|
|
|
pub display_name: &'a str,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl RoomContext<'_> {
|
2021-03-15 20:10:42 +00:00
|
|
|
pub fn new_with_name<'a>(room: &'a Joined, display_name: &'a str) -> RoomContext<'a> {
|
2021-01-29 22:35:07 +00:00
|
|
|
RoomContext {
|
|
|
|
id: room.room_id(),
|
|
|
|
display_name,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|