use std::time::Duration;
use salvo::oapi::ToSchema;
use serde::{Deserialize, Serialize};
use crate::presence::PresenceState;
#[derive(ToSchema, Deserialize, Debug)]
pub struct SetPresenceReqBody {
pub presence: PresenceState,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status_msg: Option<String>,
}
#[derive(ToSchema, Serialize, Debug)]
pub struct PresenceResBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status_msg: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub currently_active: Option<bool>,
#[serde(
with = "crate::serde::duration::opt_ms",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_active_ago: Option<Duration>,
pub presence: PresenceState,
}
impl PresenceResBody {
pub fn new(presence: PresenceState) -> Self {
Self {
presence,
status_msg: None,
currently_active: None,
last_active_ago: None,
}
}
}