]> Untitled Git - lemmy.git/blob - crates/websocket/src/messages.rs
Rename `lemmy_structs` to `lemmy_api_structs`
[lemmy.git] / crates / websocket / src / messages.rs
1 use crate::UserOperation;
2 use actix::{prelude::*, Recipient};
3 use lemmy_api_structs::{comment::CommentResponse, post::PostResponse};
4 use lemmy_utils::{CommunityId, ConnectionId, IpAddr, PostId, UserId};
5 use serde::{Deserialize, Serialize};
6
7 /// Chat server sends this messages to session
8 #[derive(Message)]
9 #[rtype(result = "()")]
10 pub struct WsMessage(pub String);
11
12 /// Message for chat server communications
13
14 /// New chat session is created
15 #[derive(Message)]
16 #[rtype(usize)]
17 pub struct Connect {
18   pub addr: Recipient<WsMessage>,
19   pub ip: IpAddr,
20 }
21
22 /// Session is disconnected
23 #[derive(Message)]
24 #[rtype(result = "()")]
25 pub struct Disconnect {
26   pub id: ConnectionId,
27   pub ip: IpAddr,
28 }
29
30 /// The messages sent to websocket clients
31 #[derive(Serialize, Deserialize, Message)]
32 #[rtype(result = "Result<String, std::convert::Infallible>")]
33 pub struct StandardMessage {
34   /// Id of the client session
35   pub id: ConnectionId,
36   /// Peer message
37   pub msg: String,
38 }
39
40 #[derive(Message)]
41 #[rtype(result = "()")]
42 pub struct SendAllMessage<Response> {
43   pub op: UserOperation,
44   pub response: Response,
45   pub websocket_id: Option<ConnectionId>,
46 }
47
48 #[derive(Message)]
49 #[rtype(result = "()")]
50 pub struct SendUserRoomMessage<Response> {
51   pub op: UserOperation,
52   pub response: Response,
53   pub recipient_id: UserId,
54   pub websocket_id: Option<ConnectionId>,
55 }
56
57 #[derive(Message)]
58 #[rtype(result = "()")]
59 pub struct SendCommunityRoomMessage<Response> {
60   pub op: UserOperation,
61   pub response: Response,
62   pub community_id: CommunityId,
63   pub websocket_id: Option<ConnectionId>,
64 }
65
66 #[derive(Message)]
67 #[rtype(result = "()")]
68 pub struct SendModRoomMessage<Response> {
69   pub op: UserOperation,
70   pub response: Response,
71   pub community_id: CommunityId,
72   pub websocket_id: Option<ConnectionId>,
73 }
74
75 #[derive(Message)]
76 #[rtype(result = "()")]
77 pub struct SendPost {
78   pub op: UserOperation,
79   pub post: PostResponse,
80   pub websocket_id: Option<ConnectionId>,
81 }
82
83 #[derive(Message)]
84 #[rtype(result = "()")]
85 pub struct SendComment {
86   pub op: UserOperation,
87   pub comment: CommentResponse,
88   pub websocket_id: Option<ConnectionId>,
89 }
90
91 #[derive(Message)]
92 #[rtype(result = "()")]
93 pub struct JoinUserRoom {
94   pub user_id: UserId,
95   pub id: ConnectionId,
96 }
97
98 #[derive(Message)]
99 #[rtype(result = "()")]
100 pub struct JoinCommunityRoom {
101   pub community_id: CommunityId,
102   pub id: ConnectionId,
103 }
104
105 #[derive(Message)]
106 #[rtype(result = "()")]
107 pub struct JoinModRoom {
108   pub community_id: CommunityId,
109   pub id: ConnectionId,
110 }
111
112 #[derive(Message)]
113 #[rtype(result = "()")]
114 pub struct JoinPostRoom {
115   pub post_id: PostId,
116   pub id: ConnectionId,
117 }
118
119 #[derive(Message)]
120 #[rtype(usize)]
121 pub struct GetUsersOnline;
122
123 #[derive(Message)]
124 #[rtype(usize)]
125 pub struct GetPostUsersOnline {
126   pub post_id: PostId,
127 }
128
129 #[derive(Message)]
130 #[rtype(usize)]
131 pub struct GetCommunityUsersOnline {
132   pub community_id: CommunityId,
133 }
134
135 #[derive(Message, Debug)]
136 #[rtype(result = "()")]
137 pub struct CaptchaItem {
138   pub uuid: String,
139   pub answer: String,
140   pub expires: chrono::NaiveDateTime,
141 }
142
143 #[derive(Message)]
144 #[rtype(bool)]
145 pub struct CheckCaptcha {
146   pub uuid: String,
147   pub answer: String,
148 }