ruma_events/room/
guest_access.rs1use ruma_common::serde::StringEnum;
6use ruma_macros::EventContent;
7use serde::{Deserialize, Serialize};
8
9use crate::{EmptyStateKey, PrivOwnedStr};
10
11#[derive(Clone, Debug, Deserialize, Serialize, EventContent)]
18#[cfg_attr(not(ruma_unstable_exhaustive_types), non_exhaustive)]
19#[ruma_event(type = "m.room.guest_access", kind = State, state_key_type = EmptyStateKey)]
20pub struct RoomGuestAccessEventContent {
21 pub guest_access: GuestAccess,
23}
24
25impl RoomGuestAccessEventContent {
26 pub fn new(guest_access: GuestAccess) -> Self {
28 Self { guest_access }
29 }
30}
31
32impl RoomGuestAccessEvent {
33 pub fn guest_access(&self) -> &GuestAccess {
35 match self {
36 Self::Original(ev) => &ev.content.guest_access,
37 Self::Redacted(_) => &GuestAccess::Forbidden,
38 }
39 }
40}
41
42impl SyncRoomGuestAccessEvent {
43 pub fn guest_access(&self) -> &GuestAccess {
45 match self {
46 Self::Original(ev) => &ev.content.guest_access,
47 Self::Redacted(_) => &GuestAccess::Forbidden,
48 }
49 }
50}
51
52#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/doc/string_enum.md"))]
54#[derive(Clone, PartialEq, Eq, StringEnum)]
55#[ruma_enum(rename_all = "snake_case")]
56#[non_exhaustive]
57pub enum GuestAccess {
58 CanJoin,
60
61 Forbidden,
63
64 #[doc(hidden)]
65 _Custom(PrivOwnedStr),
66}