use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::event::{RoomInfo, UserInfo}; use crate::event::reaction::ReactionGroup; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageNewService { pub id: Uuid, pub seq: i64, pub room: RoomInfo, pub sender_type: String, pub sender: UserInfo, pub thread: Option, pub in_reply_to: Option, pub content: String, pub content_type: String, #[serde(default)] pub pinned: bool, pub system_type: Option, #[serde(default)] pub metadata: serde_json::Value, pub thinking_content: Option, pub thinking_is_chunked: Option, pub send_at: DateTime, #[serde(default)] pub reactions: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageEditedService { pub id: Uuid, pub seq: i64, pub room: RoomInfo, pub sender: UserInfo, pub content: String, pub edited_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageRevokedService { pub id: Uuid, pub seq: i64, pub room: RoomInfo, pub revoked_by: UserInfo, pub revoked_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageStreamStartService { pub message_id: Uuid, pub room: RoomInfo, pub sse_url: Option, pub display_name: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageStreamChunkService { pub message_id: Uuid, pub room: RoomInfo, pub seq: i64, pub content: String, pub chunk_type: String, pub display_name: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageStreamDoneService { pub message_id: Uuid, pub room: RoomInfo, pub content: String, pub thinking_content: Option, pub display_name: Option, pub error: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageListService { pub room: RoomInfo, pub messages: Vec, pub total: i64, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageSendClient { pub room: Uuid, pub content: String, pub content_type: String, pub thread: Option, pub in_reply_to: Option, pub attachment_ids: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageEditClient { pub room: Uuid, pub message_id: Uuid, pub content: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageRevokeClient { pub room: Uuid, pub message_id: Uuid, }