privchat_protocol/rpc/message/
status.rs1use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct MessageStatusReadRequest {
26 pub channel_id: u64,
28 #[serde(alias = "server_message_id")]
30 pub message_id: u64,
31 #[serde(default)]
33 pub user_id: u64,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct MessageReadListRequest {
41 #[serde(alias = "server_message_id")]
43 pub message_id: u64,
44 pub channel_id: u64,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct MessageReadStatsRequest {
53 #[serde(alias = "server_message_id")]
55 pub message_id: u64,
56 pub channel_id: u64,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct MessageStatusCountRequest {
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub channel_id: Option<u64>,
68}
69
70pub type MessageStatusReadResponse = bool;
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct MessageReadUserEntry {
81 pub user_id: u64,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub username: Option<String>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub nickname: Option<String>,
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub avatar_url: Option<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub read_at: Option<String>,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct MessageReadListResponse {
97 #[serde(default, alias = "read_list")]
98 pub readers: Vec<MessageReadUserEntry>,
99 #[serde(default, alias = "total_members")]
100 pub total: usize,
101 #[serde(default)]
102 pub read_count: u32,
103 #[serde(default)]
104 pub unread_count: u32,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
111pub struct MessageReadStatsResponse {
112 pub read_count: u32,
113 #[serde(default, alias = "total_members")]
114 pub total_count: u32,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct MessageStatusCountResponse {
122 pub unread_count: i32,
123 #[serde(default)]
124 pub channel_id: Option<String>,
125}