gitdataai/lib/channel/event/member.rs
2026-05-30 01:38:40 +08:00

90 lines
2.1 KiB
Rust

use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::event::{RoomInfo, UserInfo};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemberJoinedService {
pub room: RoomInfo,
pub user: UserInfo,
pub project_role: Option<String>,
pub joined_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemberRemovedService {
pub room: RoomInfo,
pub user: UserInfo,
pub removed_by: UserInfo,
pub removed_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReadReceiptService {
pub room: RoomInfo,
pub user: UserInfo,
pub last_read_seq: i64,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TypingStartService {
pub room: RoomInfo,
pub user: UserInfo,
pub sender_type: String,
pub started_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TypingStopService {
pub room: RoomInfo,
pub user: UserInfo,
pub sender_type: String,
pub stopped_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DndUpdatedService {
pub room: RoomInfo,
pub user: UserInfo,
pub do_not_disturb: bool,
pub dnd_start_hour: Option<i32>,
pub dnd_end_hour: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessGrantClient {
pub room: RoomInfo,
pub user: UserInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessRevokeClient {
pub room: RoomInfo,
pub user: UserInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReadReceiptClient {
pub room: RoomInfo,
pub last_read_seq: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TypingStartClient {
pub room: RoomInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TypingStopClient {
pub room: RoomInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DndUpdateClient {
pub room: RoomInfo,
pub do_not_disturb: bool,
pub dnd_start_hour: Option<i32>,
pub dnd_end_hour: Option<i32>,
}