slack_bk/
surfaces.rs

1use crate::blocks;
2use crate::composition::Text;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Deserialize, Serialize)]
6pub struct Message {
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub text: Option<String>,
9
10    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11    pub blocks: Vec<blocks::Block>,
12
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub thread_ts: Option<String>,
15
16    #[serde(default = "default_mrkdwn")]
17    pub mrkdwn: bool,
18}
19
20fn default_mrkdwn() -> bool {
21    true
22}
23
24impl Default for Message {
25    fn default() -> Self {
26        Self {
27            text: None,
28            blocks: Vec::new(),
29            thread_ts: None,
30            mrkdwn: true,
31        }
32    }
33}
34
35#[derive(Debug, Deserialize, Serialize, Default)]
36pub struct Modal {
37    pub title: Text,
38
39    pub submit: Text,
40    pub close: Text,
41
42    #[serde(default, skip_serializing_if = "Vec::is_empty")]
43    pub blocks: Vec<blocks::Block>,
44}