]> Untitled Git - lemmy.git/blob - crates/websocket/src/messages.rs
Check user accepted before sending jwt in password reset (fixes #2591) (#2597)
[lemmy.git] / crates / websocket / src / messages.rs
1 use crate::UserOperation;
2 use actix::{prelude::*, Recipient};
3 use lemmy_api_common::{comment::CommentResponse, post::PostResponse};
4 use lemmy_db_schema::newtypes::{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<OP: ToString, Response> {
44   pub op: OP,
45   pub response: Response,
46   pub websocket_id: Option<ConnectionId>,
47 }
48
49 #[derive(Message)]
50 #[rtype(result = "()")]
51 pub struct SendUserRoomMessage<OP: ToString, Response> {
52   pub op: OP,
53   pub response: Response,
54   pub local_recipient_id: LocalUserId,
55   pub websocket_id: Option<ConnectionId>,
56 }
57
58 /// Send message to all users viewing the given community.
59 #[derive(Message)]
60 #[rtype(result = "()")]
61 pub struct SendCommunityRoomMessage<OP: ToString, Response> {
62   pub op: OP,
63   pub response: Response,
64   pub community_id: CommunityId,
65   pub websocket_id: Option<ConnectionId>,
66 }
67
68 /// Send message to mods of a given community. Set community_id = 0 to send to site admins.
69 #[derive(Message)]
70 #[rtype(result = "()")]
71 pub struct SendModRoomMessage<Response> {
72   pub op: UserOperation,
73   pub response: Response,
74   pub community_id: CommunityId,
75   pub websocket_id: Option<ConnectionId>,
76 }
77
78 #[derive(Message)]
79 #[rtype(result = "()")]
80 pub(crate) struct SendPost<OP: ToString> {
81   pub op: OP,
82   pub post: PostResponse,
83   pub websocket_id: Option<ConnectionId>,
84 }
85
86 #[derive(Message)]
87 #[rtype(result = "()")]
88 pub(crate) struct SendComment<OP: ToString> {
89   pub op: OP,
90   pub comment: CommentResponse,
91   pub websocket_id: Option<ConnectionId>,
92 }
93
94 #[derive(Message)]
95 #[rtype(result = "()")]
96 pub struct JoinUserRoom {
97   pub local_user_id: LocalUserId,
98   pub id: ConnectionId,
99 }
100
101 #[derive(Message)]
102 #[rtype(result = "()")]
103 pub struct JoinCommunityRoom {
104   pub community_id: CommunityId,
105   pub id: ConnectionId,
106 }
107
108 #[derive(Message)]
109 #[rtype(result = "()")]
110 pub struct JoinModRoom {
111   pub community_id: CommunityId,
112   pub id: ConnectionId,
113 }
114
115 #[derive(Message)]
116 #[rtype(result = "()")]
117 pub struct JoinPostRoom {
118   pub post_id: PostId,
119   pub id: ConnectionId,
120 }
121
122 #[derive(Message)]
123 #[rtype(usize)]
124 pub struct GetUsersOnline;
125
126 #[derive(Message)]
127 #[rtype(usize)]
128 pub struct GetPostUsersOnline {
129   pub post_id: PostId,
130 }
131
132 #[derive(Message)]
133 #[rtype(usize)]
134 pub struct GetCommunityUsersOnline {
135   pub community_id: CommunityId,
136 }
137
138 #[derive(Message, Debug)]
139 #[rtype(result = "()")]
140 pub struct CaptchaItem {
141   pub uuid: String,
142   pub answer: String,
143   pub expires: chrono::NaiveDateTime,
144 }
145
146 #[derive(Message)]
147 #[rtype(bool)]
148 pub struct CheckCaptcha {
149   pub uuid: String,
150   pub answer: String,
151 }