use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum CommandKind {
Dispatch,
Subscribe,
Unsubscribe,
SetActivity,
SendActivityJoinInvite,
CloseActivityJoinRequest,
ActivityInviteUser,
AcceptActivityInvite,
#[serde(rename = "SET_OVERLAY_LOCKED")]
SetOverlayVisibility,
OpenOverlayActivityInvite,
OpenOverlayGuildInvite,
OpenOverlayVoiceSettings,
GetRelationships,
}
#[derive(Deserialize, Debug)]
#[serde(tag = "cmd", content = "data", rename_all = "SCREAMING_SNAKE_CASE")]
pub(crate) enum Command {
Subscribe {
evt: super::EventKind,
},
SetActivity(Box<Option<crate::activity::SetActivity>>),
ActivityInviteUser,
AcceptActivityInvite,
SendActivityJoinInvite,
CloseActivityJoinRequest,
#[serde(rename = "SET_OVERLAY_LOCKED")]
SetOverlayVisibility,
OpenOverlayActivityInvite,
OpenOverlayGuildInvite,
OpenOverlayVoiceSettings,
GetRelationships {
relationships: Vec<crate::relations::Relationship>,
},
}
#[derive(Deserialize, Debug)]
pub(crate) struct CommandFrame {
#[serde(flatten)]
pub(crate) inner: Command,
#[serde(deserialize_with = "crate::util::string::deserialize")]
pub(crate) nonce: usize,
}