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