slack_rust/views/
view.rs

1use crate::block::block_object::TextBlockObject;
2use crate::block::blocks::{Block, BlockAction};
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5use std::collections::HashMap;
6
7#[skip_serializing_none]
8#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
9pub struct ViewState {
10    pub values: HashMap<String, HashMap<String, BlockAction>>,
11}
12
13#[skip_serializing_none]
14#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
15pub struct View {
16    pub id: Option<String>,
17    pub team_id: Option<String>,
18    #[serde(rename = "type")]
19    pub type_filed: Option<ViewType>,
20    pub blocks: Option<Vec<Block>>,
21    pub private_metadata: Option<String>,
22    pub callback_id: Option<String>,
23    pub state: Option<ViewState>,
24    pub title: Option<TextBlockObject>,
25    pub close: Option<TextBlockObject>,
26    pub submit: Option<TextBlockObject>,
27    pub hash: Option<String>,
28    pub clear_on_close: Option<bool>,
29    pub notify_on_close: Option<bool>,
30    pub root_view_id: Option<String>,
31    pub previous_view_id: Option<String>,
32    pub app_id: Option<String>,
33    pub external_id: Option<String>,
34    pub bot_id: Option<String>,
35}
36
37#[derive(Deserialize, Serialize, Debug, PartialEq)]
38#[serde(rename_all = "snake_case")]
39pub enum ViewType {
40    Modal,
41    Home,
42}