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