git-subtree-dir: ruma-common git-subtree-mainline: c186f0f8c9c542fd1c7cea464de1ae94e5bd32ba git-subtree-split: b516c0cd72c1a5e9985905f60b956c5365cd8789
56 lines
1.5 KiB
Rust
56 lines
1.5 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use serde_json::value::RawValue as RawJsonValue;
|
|
|
|
/// Values for the `set_tweak` action.
|
|
#[derive(Clone, Deserialize, Serialize)]
|
|
#[serde(untagged)]
|
|
pub enum Tweak {
|
|
Sound(SoundTweak),
|
|
Highlight(HighlightTweak),
|
|
Custom {
|
|
#[serde(rename = "set_tweak")]
|
|
name: String,
|
|
value: Box<RawJsonValue>,
|
|
},
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
|
|
#[serde(tag = "set_tweak", rename = "sound")]
|
|
pub struct SoundTweak {
|
|
value: String,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
|
|
#[serde(tag = "set_tweak", rename = "highlight")]
|
|
pub struct HighlightTweak {
|
|
#[serde(
|
|
default = "ruma_serde::default_true",
|
|
skip_serializing_if = "ruma_serde::is_true"
|
|
)]
|
|
value: bool,
|
|
}
|
|
|
|
impl From<super::Tweak> for Tweak {
|
|
fn from(tweak: super::Tweak) -> Self {
|
|
use super::Tweak::*;
|
|
|
|
match tweak {
|
|
Sound(value) => Self::Sound(SoundTweak { value }),
|
|
Highlight(value) => Self::Highlight(HighlightTweak { value }),
|
|
Custom { name, value } => Self::Custom { name, value },
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<Tweak> for super::Tweak {
|
|
fn from(tweak: Tweak) -> Self {
|
|
use Tweak::*;
|
|
|
|
match tweak {
|
|
Sound(SoundTweak { value }) => Self::Sound(value),
|
|
Highlight(HighlightTweak { value }) => Self::Highlight(value),
|
|
Custom { name, value } => Self::Custom { name, value },
|
|
}
|
|
}
|
|
}
|