]> Untitled Git - lemmy.git/blob - crates/api_common/src/websocket/mod.rs
Add Custom Emojis Support (#2616)
[lemmy.git] / crates / api_common / src / websocket / mod.rs
1 use lemmy_utils::error::LemmyError;
2 use serde::Serialize;
3
4 pub mod chat_server;
5 pub mod handlers;
6 pub mod send;
7 pub mod structs;
8
9 #[derive(Serialize)]
10 struct WebsocketResponse<T> {
11   op: String,
12   data: T,
13 }
14
15 pub fn serialize_websocket_message<OP, Response>(
16   op: &OP,
17   data: &Response,
18 ) -> Result<String, LemmyError>
19 where
20   Response: Serialize,
21   OP: ToString,
22 {
23   let response = WebsocketResponse {
24     op: op.to_string(),
25     data,
26   };
27   Ok(serde_json::to_string(&response)?)
28 }
29
30 #[derive(EnumString, Display, Debug, Clone)]
31 pub enum UserOperation {
32   Login,
33   GetCaptcha,
34   SaveComment,
35   CreateCommentLike,
36   DistinguishComment,
37   CreateCommentReport,
38   ResolveCommentReport,
39   ListCommentReports,
40   CreatePostLike,
41   LockPost,
42   FeaturePost,
43   MarkPostAsRead,
44   SavePost,
45   CreatePostReport,
46   ResolvePostReport,
47   ListPostReports,
48   GetReportCount,
49   GetUnreadCount,
50   VerifyEmail,
51   FollowCommunity,
52   GetReplies,
53   GetPersonMentions,
54   MarkPersonMentionAsRead,
55   MarkCommentReplyAsRead,
56   GetModlog,
57   BanFromCommunity,
58   AddModToCommunity,
59   AddAdmin,
60   GetUnreadRegistrationApplicationCount,
61   ListRegistrationApplications,
62   ApproveRegistrationApplication,
63   BanPerson,
64   GetBannedPersons,
65   MarkAllAsRead,
66   SaveUserSettings,
67   TransferCommunity,
68   LeaveAdmin,
69   PasswordReset,
70   PasswordChange,
71   MarkPrivateMessageAsRead,
72   CreatePrivateMessageReport,
73   ResolvePrivateMessageReport,
74   ListPrivateMessageReports,
75   UserJoin,
76   PostJoin,
77   CommunityJoin,
78   ModJoin,
79   ChangePassword,
80   GetSiteMetadata,
81   BlockCommunity,
82   BlockPerson,
83   PurgePerson,
84   PurgeCommunity,
85   PurgePost,
86   PurgeComment,
87 }
88
89 #[derive(EnumString, Display, Debug, Clone)]
90 pub enum UserOperationCrud {
91   // Site
92   CreateSite,
93   GetSite,
94   EditSite,
95   // Community
96   CreateCommunity,
97   ListCommunities,
98   EditCommunity,
99   DeleteCommunity,
100   RemoveCommunity,
101   // Post
102   CreatePost,
103   GetPost,
104   EditPost,
105   DeletePost,
106   RemovePost,
107   // Comment
108   CreateComment,
109   GetComment,
110   EditComment,
111   DeleteComment,
112   RemoveComment,
113   // User
114   Register,
115   DeleteAccount,
116   // Private Message
117   CreatePrivateMessage,
118   GetPrivateMessages,
119   EditPrivateMessage,
120   DeletePrivateMessage,
121   //Emojis
122   CreateCustomEmoji,
123   EditCustomEmoji,
124   DeleteCustomEmoji,
125 }
126
127 #[derive(EnumString, Display, Debug, Clone)]
128 pub enum UserOperationApub {
129   GetPosts,
130   GetCommunity,
131   GetComments,
132   GetPersonDetails,
133   Search,
134   ResolveObject,
135 }
136
137 pub trait OperationType {}
138
139 impl OperationType for UserOperationCrud {}
140
141 impl OperationType for UserOperation {}
142
143 impl OperationType for UserOperationApub {}