use crate::chat::{
events::{EventMeta, UserEvent},
parser::{
raw::{ParseResult, RawMessage},
user::parse_user_status,
util::normalize_user_id,
},
types::User,
};
pub fn parse_exit_event(raw: RawMessage) -> ParseResult<Option<(bool, UserEvent)>> {
if raw.field(0)? == "1" {
return Ok(None);
}
let is_kick = raw.field(3)? != "1";
Ok(Some((
is_kick,
UserEvent {
meta: EventMeta {
received_time: raw.received_time,
},
user: User {
id: normalize_user_id(raw.field(1)?),
label: raw.field_string(2)?,
status: parse_user_status(raw.field(5)?),
subscribe: None,
},
},
)))
}