watch-party/src/events.rs

37 lines
919 B
Rust
Raw Normal View History

2021-10-24 22:48:10 +00:00
use serde::{Deserialize, Serialize};
#[derive(Clone, Serialize, Deserialize)]
#[serde(tag = "op", content = "data")]
pub enum WatchEventData {
SetPlaying { playing: bool, time: u64 },
2021-10-24 22:48:10 +00:00
SetTime(u64),
2021-10-25 01:59:52 +00:00
UserJoin,
UserLeave,
ChatMessage(String),
Ping(String)
}
#[derive(Clone, Serialize, Deserialize)]
pub struct WatchEvent {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub colour: Option<String>,
#[serde(flatten)]
pub data: WatchEventData,
#[serde(default)]
pub reflected: bool,
}
impl WatchEvent {
pub fn new(user: String, colour: String, data: WatchEventData) -> Self {
WatchEvent {
user: Some(user),
colour: Some(colour),
data,
reflected: false,
}
}
2021-10-24 22:48:10 +00:00
}