rust_tdlib/types/
open_chat.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct OpenChat {
8    #[doc(hidden)]
9    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10    extra: Option<String>,
11    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12    client_id: Option<i32>,
13    /// Chat identifier
14
15    #[serde(default)]
16    chat_id: i64,
17
18    #[serde(rename(serialize = "@type"))]
19    td_type: String,
20}
21
22impl RObject for OpenChat {
23    #[doc(hidden)]
24    fn extra(&self) -> Option<&str> {
25        self.extra.as_deref()
26    }
27    #[doc(hidden)]
28    fn client_id(&self) -> Option<i32> {
29        self.client_id
30    }
31}
32
33impl RFunction for OpenChat {}
34
35impl OpenChat {
36    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
37        Ok(serde_json::from_str(json.as_ref())?)
38    }
39    pub fn builder() -> OpenChatBuilder {
40        let mut inner = OpenChat::default();
41        inner.extra = Some(Uuid::new_v4().to_string());
42
43        inner.td_type = "openChat".to_string();
44
45        OpenChatBuilder { inner }
46    }
47
48    pub fn chat_id(&self) -> i64 {
49        self.chat_id
50    }
51}
52
53#[doc(hidden)]
54pub struct OpenChatBuilder {
55    inner: OpenChat,
56}
57
58#[deprecated]
59pub type RTDOpenChatBuilder = OpenChatBuilder;
60
61impl OpenChatBuilder {
62    pub fn build(&self) -> OpenChat {
63        self.inner.clone()
64    }
65
66    pub fn chat_id(&mut self, chat_id: i64) -> &mut Self {
67        self.inner.chat_id = chat_id;
68        self
69    }
70}
71
72impl AsRef<OpenChat> for OpenChat {
73    fn as_ref(&self) -> &OpenChat {
74        self
75    }
76}
77
78impl AsRef<OpenChat> for OpenChatBuilder {
79    fn as_ref(&self) -> &OpenChat {
80        &self.inner
81    }
82}