use ruma visibility enum in directory interface

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-11-13 01:01:00 +00:00
parent 68582dd868
commit 77fab2c323

View file

@ -3,7 +3,7 @@ use std::sync::Arc;
use conduit::{implement, utils::stream::TryIgnore, Result};
use database::Map;
use futures::Stream;
use ruma::RoomId;
use ruma::{api::client::room::Visibility, RoomId};
pub struct Service {
db: Data,
@ -32,7 +32,16 @@ pub fn set_public(&self, room_id: &RoomId) { self.db.publicroomids.insert(room_i
pub fn set_not_public(&self, room_id: &RoomId) { self.db.publicroomids.remove(room_id); }
#[implement(Service)]
pub async fn is_public_room(&self, room_id: &RoomId) -> bool { self.db.publicroomids.get(room_id).await.is_ok() }
pub fn public_rooms(&self) -> impl Stream<Item = &RoomId> + Send { self.db.publicroomids.keys().ignore_err() }
#[implement(Service)]
pub fn public_rooms(&self) -> impl Stream<Item = &RoomId> + Send { self.db.publicroomids.keys().ignore_err() }
pub async fn is_public_room(&self, room_id: &RoomId) -> bool { self.visibility(room_id).await == Visibility::Public }
#[implement(Service)]
pub async fn visibility(&self, room_id: &RoomId) -> Visibility {
if self.db.publicroomids.get(room_id).await.is_ok() {
Visibility::Public
} else {
Visibility::Private
}
}