stream_deck_plugin/
client_response.rs

1use serde::Deserialize;
2use serde::Serialize;
3
4#[derive(Debug, Deserialize, Serialize)]
5//#[serde(rename_all = "camelCase")]
6pub enum Controller {
7    Keypad,
8    Encoder,
9}
10
11#[derive(Debug, Deserialize, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub struct Coordinates {
14    column: u8,
15    pub row: u8,
16}
17#[derive(Debug, Deserialize, Serialize)]
18#[serde(rename_all = "camelCase")]
19enum Event {
20    DeviceDidConnect,
21    KeyUp,
22    KeyDown,
23    WillAppear,
24    TitleParametersDidChange,
25
26    SetTitle,
27    SetState,
28}
29
30#[derive(Debug, Deserialize, Serialize)]
31#[serde(rename_all = "camelCase")]
32pub struct ClientResponseWillAppearPayload {
33    pub settings: serde_json::Value,
34    pub coordinates: Coordinates,
35    pub controller: Controller,
36    pub state: u8,
37    pub is_in_multi_action: bool,
38}
39#[derive(Debug, Deserialize, Serialize)]
40#[serde(rename_all = "camelCase")]
41pub struct ClientResponseKeyUpPayload {
42    pub settings: serde_json::Value,
43    pub coordinates: Coordinates,
44    pub state: usize,
45    pub user_desired_state: Option<u8>,
46    pub is_in_multi_action: bool,
47}
48#[derive(Debug, Deserialize, Serialize)]
49#[serde(rename_all = "camelCase")]
50#[serde(tag = "event")]
51pub enum ClientResponse {
52    KeyUp {
53        action: String,
54        //event: Event,
55        context: String,
56        device: String,
57        payload: ClientResponseKeyUpPayload,
58    },
59    WillAppear {
60        action: String,
61        //event: Event,
62        context: String,
63        device: String,
64        payload: ClientResponseWillAppearPayload,
65    },
66}